计数字母发生

程序需要计算并显示指定的charector在文本文件中出现的次数。

目前总数为零。 我不是,如果我应该使用不同的循环,我也尝试使用’for’循环。

// Hold user input and sum String fileName; // Holds the name of the file String letter; // Letter to search for in the file int total = 0; // Holds the total number of characters in the file // Get the name of the file and character from the user fileName = JOptionPane.showInputDialog("Please enter the name of a file:"); letter = JOptionPane.showInputDialog("Please enter a letter contained in the string"); // Open the file for reading File file = new File(fileName); Scanner inputFile = new Scanner(file); // Declare new scanner object for file reading // Set accumulator to zero int count = 0; if (inputFile.nextLine().equalsIgnoreCase(letter)) { count++; // add letter occurrence total += count; // add the letter occurrence to the total } 

  BufferedReader reader = new BufferedReader(new FileReader("somefile.txt")); int ch; char charToSearch='a'; int counter=0; while((ch=reader.read()) != -1) { if(charToSearch == (char)ch) { counter++; } }; reader.close(); System.out.println(counter); 

这有什么帮助吗?

您的代码中存在错误。下面的错误代码 –

  String fileName; // Holds the name of the file String letter; // Letter to search for in the file // Get the name of the file and character from the user fileName = "C:\\bin\\GWT.txt"; letter = "X"; // Open the file for reading File file = new File(fileName); Scanner inputFile = new Scanner(file); // Declare new scanner object for file reading // Set accumulator to zero int count = 0; while(inputFile.hasNext()) { if (inputFile.nextLine().toLowerCase().contains(letter.toLowercase())) { count++; // add letter occurrence } } System.out.println(count); 

这个答案假设您的文本文件中的每一行只包含一个字母,如您的问题所示。

您需要将if语句包装在循环中,因为当前您只检查文件的第一行:

  while(inputFile.hasNext()) { if (inputFile.nextLine().equalsIgnoreCase(letter)) { count++; // add letter occurrence total += count; // add the letter occurrence to the total } } 

你也可以替换:

 count++; total+= count; 

只是

 total++; 
 String line="" while(inputFile.hasNext()) { line = inputFile.nextLine(); for(int i=0; i