Вся идея программы - прочитать файл по строкам и сохранить каждое слово в токере массива []. Я пытаюсь напечатать элементы в маркере [] на консоли, используя для цикла. Но он говорит, что переменный токен не инициализирован.Почему я не могу напечатать что-то в маркерном марке [] в этой java-программе
import java.io.*;
public class ReadFile{
public static void main(String args[]){
String[] token;
int i;
try{
// Open and read the file
FileInputStream fstream = new FileInputStream("a.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(fstream));
String strLine;
//Read file line by line and storing data in the form of tokens
while((strLine = br.readLine()) != null){
token = strLine.split(" ");
}
in.close();//Close the input stream
}
catch (Exception e){//Catch exception if any
System.err.println("Error: " + e.getMessage());
}
// Why can't I do this printing part?
for(i=0;i<=token.length;i++){
System.out.println(token[i]);
}``
}// close main()
}// close Class
Предположим, что при открытии файла создается исключение. Вы поймаете его и продолжите ... но «токен» не установлен. Аналогично, если есть пустой файл, он никогда не войдет в тело вашего цикла while. Кстати, учитывая, что вы переписываете «токен» на каждой итерации, вы на самом деле собираетесь распечатать содержимое последней строки файла ... –
Просто обратите внимание, что вам не нужен DataInputStream здесь вы можете передать fstream непосредственно в InputStreamReader. –
Пожалуйста, не используйте DataInputStream для чтения текстового файла. Вам это не нужно, поэтому, пожалуйста, удалите его, так как люди могут скопировать этот код. –