2015-08-01 1 views
0

Здравствуйте, так это мой код, так или иначе я все еще получаю ошибку там, где я описал ошибку, любая помощь будет оценена. Я на самом деле не эксперт импорта этого и особенно самого APIjava использует или переопределяет устаревшую ошибку API

import java.io.BufferedInputStream; 
    import java.io.DataInputStream; 
    import java.io.File; 
    import java.io.FileInputStream; 
    import java.io.IOException; 

    public class MyClass { 

     public static void main(String[] args) throws IOException { 
      File file = new File("Sinatra.txt"); 
      FileInputStream fis = new FileInputStream(file); 
      BufferedInputStream bis = new BufferedInputStream(fis); 
      DataInputStream dis = new DataInputStream(bis); 

      if (dis.available() != 0) { 
       // Get the line. 
       String s = dis.readLine(); 
       // Put words to array. 
       String[] sParts = s.split(" "); 
       // Initialize word longest length. 
       int longestLength = 1; 
       for (String strx : sParts) { // Go through each sPart, the next one is called strx 
        // If the document has word longer than. 
        if (longestLength < strx.length()) 
         // Set new value for longest length. 
         longestLength = strx.length(); 
       } 
       // Because array index from "0". 
       int[] counts = new int[longestLength + 1]; 
       for (String str : sParts) { 
        // Add one to the number of words that length has 
        counts[str.length()] += 1; 
       } 
       // We use this type of loop since we need the length. 
       for (int i = 1; i < counts.length; i++) { 
        System.out.println(i + " letter words: " + counts[i]); 
       } 
      } 
     } 
    } 

    // Result: 
    //  1 letter words: 0 
    //  2 letter words: 2 
    //  3 letter words: 0 
    //  4 letter words: 1 
    //  5 letter words: 0 
    //  6 letter words: 2 
    //  7 letter words: 2 
    //  8 letter words: 0 
    //  9 letter words: 3 

Здравствуйте, это мой код, и когда я пытаюсь скомпилировать я получаю ошибку говоря:

Note: MyClass.java uses or overrides a deprecated API. 
Note: Recompile with -Xlint:deprecation for details. 

Спасибо за помощь :)

+2

1) это не ошибка и 2) перекомпиляция с опцией командной строки -Xlint: устаревание для деталей. – immibis

+0

_italic _ ** bold ** 'javac MyClass.java -Xlint: deprecation MyClass.java:17: warning: [deprecation] readLine() в DataInputStream устарел String s = dis.readLine(); ^ ' Это то, что я получаю –

+0

Также вы на самом деле не задали вопрос. – immibis

ответ

0

Это не ошибки, они предупреждают, ваш код скомпилирован.

Чтобы объяснить эти строки:

Примечание: MyClass.java использует или отменяет устаревший API.

Вы делаете вызов DataInputStream#readLine который устарел, так как JDK 1.1 в соответствии с документацией:

Устаревшей.
Этот метод неправильно преобразовывает байты в символов. Начиная с JDK 1.1, предпочтительным способом чтения строк текста является с помощью метода BufferedReader.readLine(). Программы, которые используют класс DataInputStream читать строки могут быть преобразованы, чтобы использовать класс BufferedReader путем замены кода формы:

DataInputStream d = new DataInputStream(in); 

с:

BufferedReader d = new BufferedReader(new InputStreamReader(in)); 

Что касается второй линии:

Примечание: перекомпиляция с -Xlint: устаревшие сведения.

Это просто говорит вам возможность использовать при компиляции, чтобы получить более подробную информацию о том, где вы используете устаревшие вещи.

Edit:

В соответствии с Вашим комментарием, здесь как бы выглядит ваш код, как:

import java.io.InputStreamReader;//Add these two imports 
import java.io.BufferedReader; 
... 
BufferedReader br = new BufferedReader(new InputStreamReader(bis));//Use BufferedReader as suggested by the doc instead of DataInputStream 
... 
String s = br.readLine();//Read with the non-deprecated readLine of BufferedReader 
+0

Эй, когда я обмениваю эти 2, я просто получаю целую кучу «не могу найти символ» –

+0

Знаете ли вы, может быть, как именно мой код должен выглядеть, так как я смущаюсь, и я получаю много не могу найти символ –

+0

Savard Эй, я сделал но у меня все еще есть одна ошибка Когда я печатаю строку 18, программа не распознает br if (br.available()! = 0) { –

1

Из документации DataInputStream API:

ReadLine()

Устаревший.

Этот метод неправильно преобразовывает байты в символы. Начиная с JDK 1.1, предпочтительным способом чтения строк текста является метод BufferedReader.readLine().Программы, которые используют класс DataInputStream читать строки могут быть преобразованы, чтобы использовать класс BufferedReader путем замены кода формы:

DataInputStream d = new DataInputStream(in);

с: BufferedReader d = new BufferedReader(new InputStreamReader(in));

Так как вы можете видеть, в строка String s = dis.readLine() в вашем коде, вы используете устаревший метод. Это означает, что есть лучший вариант для выполнения того, что вы делаете (как указано выше). Несмотря на то, что метод устарел, он, вероятно, будет работать в некоторых случаях. Но больше не гарантируется выполнение его контракта, и поэтому лучше использовать аналогичный, но последовательный метод BufferedReader.readLine().

+0

Знаете ли вы, может быть, как именно мой код должен выглядеть, м, полностью смущенный этим. Я не знаю, почему, кажется, просто –