File Letter Counter
编写一个程序,要求用户输入文件名,然后要求用户 输入一个角色。程序应该计算并显示该次数 指定的字符出现在文件中。使用记事本或其他文本编辑器来创建 可用于测试程序的示例文件。
有人可以解释为什么计数不起作用,我总是得到0的输出。
import java.util.Scanner;
public class TESTTEST
{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("Enter file name:");
String linestr = sc.nextLine().toUpperCase();
System.out.print(" Enter character to count:");
char ch = sc.next().toUpperCase().charAt(0);
int count = 0;
for(char ch0:linestr.toCharArray()) {
if(ch0 == ch)
count++;
}
System.out.println(" The character " + "'"+ch+"'" + " appears in the file wc4 " + count + " times.");
}
}
答案 0 :(得分:1)
这是因为您当前正在检查文件的名称中的字符,而不是文件本身。你应该实际接受完整的文件路径,除非文件在同一个目录中,在这种情况下你可以只取名字(因为这是本地路径)。
此处修改了您的代码以允许从文件中读取:
import java.util.*;
public class TESTTEST
{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("Enter file path:");
//This is the path to the file you want to read from
String path = sc.nextLine();
System.out.print(" Enter character to count:");
char ch = sc.next().toUpperCase().charAt(0);
//read all lines into a list
List<String> lines = Files.readAllLines(Paths.get(path), StandardCharsets.UTF_8);
int count = 0;
for(String linestr:lines){
for(char ch0:linestr.toCharArray()) {
if(ch0 == ch)
count++;
}
}
System.out.println(" The character " + "'"+ch+"'" + " appears in the file wc4 " + count + " times.");
}
}
另请查看documentation for Files.readAllLines
并注意此功能不适用于读取大文件。使用Scanner
或BufferedReader
代替大文件。