Java Codelab字母计数器

时间:2016-02-10 21:59:59

标签: java

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."); 
    }
}

1 个答案:

答案 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并注意此功能不适用于读取大文件。使用ScannerBufferedReader代替大文件。