Задача
В настоящее время я создаю программу для чтения файла и поиска пары переменных. Я сталкиваюсь с этой проблемой, когда изменение одного println изменяет весь вывод моего кода. Я никогда не сталкивался с этим раньше и не уверен, является ли это ошибкой затмения или моей ошибкой?
Мой код
import java.io.File;
import java.io.IOException;
import java.util.Scanner;
public class FileAnalyzer {
public static void main(String args[]) throws IOException {
Scanner input = new Scanner(System.in);
String fileName;
int words = 0, letters = 0, blanks = 0, digits = 0, miscChars = 0, lines = 0;
System.out.print("Please enter the file path of a .txt file: ");
fileName = input.nextLine();
File text = new File(fileName);
//System.out.println(text.exists());
Scanner word = new Scanner(text);
while(word.hasNext()) {
//System.out.println(word.next());
words++;
}
word.close();
Scanner letter = new Scanner(text);
while(letter.hasNext()) {
String currentWord = letter.next().toLowerCase();
for(int i = 0; i < currentWord.length(); i++) {
if(Character.isLetter(currentWord.charAt(i))) {
letters++;
}
}
}
letter.close();
Scanner blank = new Scanner(text);
while(blank.hasNextLine()) {
String currentWord = blank.nextLine();
for(int j = 0; j < currentWord.length(); j++) {
if (currentWord.charAt(j) == ' ') {
blanks++;
}
}
}
blank.close();
System.out.println("Words: " + words);
System.out.println("Letters: " + letters);
System.out.println("Blanks: " + blanks);
}
}
Однако
Простое изменение System.out.println(word.next())
в первом экземпляре сканера изменяет весь вывод. Если я оставлю это, я получу три печатных заявления внизу и то, что я ищу. Если я удалю его, так как я не хочу, чтобы каждое слово печаталось в файле, оно показывалось как ничего в консоли. Не уверен, почему один оператор печати в операторе while изменяет весь вывод. Единственная причина, по которой он был там, была в первую очередь, чтобы убедиться, что сканер вводил данные так, как я хотел.