Возникли проблемы с использованием цикла для поиска введенного пользователем символа из текстового файла в Java.JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Возникли проблемы с использованием цикла для поиска введенного пользователем символа из текстового файла в Java.

Сообщение Anonymous »

У меня возникли проблемы с написанием программы для моего класса Java. Инструкции к заданию следующие:

"Счетчик букв файла:

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

Текстовый файл, который мой профессор предоставил нам для тестирования этой программы, содержит 1307 строк случайных букв, которые эта программа должна пройти и По какой-то причине я не могу заставить эту программу работать правильно. Я пробовал использовать что-то помимо того, что мы уже узнали на уроке и в книге, но я совершенно запутался.
Пример ввода:

Код: Выделить всё

f
d
s
h
j
Вот мой код (скомпилированный в NetBeans 23):

Код: Выделить всё

package filelettercounter;

import java.util.Scanner;
import java.io.*;

public class FileLetterCounter {

public static void main(String[] args) throws IOException {

Scanner keyboard = new Scanner(System.in);

System.out.print("Enter the file name: ");
String filename = keyboard.nextLine();

File file = new File(filename);
Scanner inputFile = new Scanner(file);

do {

int counter = 0;
String line = inputFile.nextLine();

System.out.print("Enter a character: ");
String character = inputFile.nextLine();

if(line.contains(character)) {
counter++;
}

System.out.println("The character " + character + " appears " +
counter + " times in the file.");

}while(inputFile.hasNext());

inputFile.close();

}
}
В результате выводятся все 1307 строк, показывая, что каждая из них встречается 0 раз...

Код: Выделить всё

   Enter a character: The character f appears 0 times in the file.
Enter a character: The character d appears 0 times in the file.
Enter a character: The character s appears 0 times in the file.
Enter a character: The character h appears 0 times in the file.
Enter a character: The character j appears 0 times in the file.
...с исключением, выдаваемым большую часть вывода.

Код: Выделить всё

Exception in thread "main" java.util.NoSuchElementException: No line found
at java.base/java.util.Scanner.nextLine(Scanner.java:1660)
at filelettercounter.FileLetterCounter.main(FileLetterCounter.java:31)
Мне нужно получить примерно такой результат:

Код: Выделить всё

Enter the file name: "filename"
Enter a character: "character"
The character (character) appears (number of times) times in the file.
Что касается мнения любого из вас, кто бесконечно более опытен, чем я, я не должен делать ничего необычного. Дальше всего, что мы успели сделать как класс, — это различные циклы (for, if/else if/else, do- while, while), накопление переменных и т. д. Это так же просто, как и базовые методы get. Поэтому, пожалуйста, никаких списков, массивов, разделителей и тому подобного.


Подробнее здесь: https://stackoverflow.com/questions/790 ... -file-in-j
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»