程序需要计算并显示指定的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
}
答案 0 :(得分:5)
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);
这有任何帮助吗?
答案 1 :(得分:1)
您的代码中存在错误。下面的错误代码 -
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);
答案 2 :(得分:0)
这个答案假设你的文本文件中的每一行只包含一个字母,如你的问题所示。
您需要将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++;
答案 3 :(得分:0)
String line=""
while(inputFile.hasNext()) {
line = inputFile.nextLine();
for(int i=0; i<line.length(); i++ ){
if (line.charAt(i)== letter)
count++;
}
}