计数在文本文件的Java大写字母

时间:2015-03-27 16:56:15

标签: java java.util.scanner

我正在使用java创建一个文本分析器,我正在尝试的是搜索文本文档,并计算有多少大写字母。

public static void main(String[] args) {
    Scanner sc = new Scanner(CapitalCount.class.getResourceAsStream("test.txt"));
    String s = sc.nextLine();
    int upperCaseCount = 0;
    int linecount = 0;

    while (sc.hasNextLine()) {
        sc.nextLine();
        linecount++;
    }

    for (int i = 0; i < s.length(); i++) {
        for (char c = 'A'; c <= 'Z'; c++) {
            if (s.charAt(i) == c) {
                upperCaseCount++;

            }
        }
    }
    System.out.println(upperCaseCount + "");
}
}

我认为我必须要考虑有多少行,这就是为什么我在顶部添加了一个行数,虽然我不确定如何用大写数量来实现这一点在第一行工作。

5 个答案:

答案 0 :(得分:8)

  1. 扫描每个字符
  2. 检查字符是否在大写字母范围内。
  3. 您不需要CapitalCount类来扫描文件。

    以下是我的工作解决方案:

    public static void main(String[] args) {
        Scanner sc = null;
        try {
            sc = new Scanner(new File("test.txt"));
            int count = 0;
            while(sc.hasNext()){
                String line = sc.nextLine();
                for(int i = 0 ; i < line.length(); i++){
                    if(line.charAt(i) >= 'A' && line.charAt(i) <= 'Z'){
                        count ++;
                    }
                }
            }
            System.out.println("The number of capital letters are : "+count);
    
        } catch (FileNotFoundException e) {
            System.out.println(e.getMessage());
        }
        finally{
            sc.close();
        }
    
    }
    

答案 1 :(得分:2)

内部循环无需检查字母是否为大写字母。 变化

for (char c = 'A'; c <= 'Z'; c++) {
    if (s.charAt(i) == c) {
        upperCaseCount++;

    }
}

if (s.charAt(i) >= 'A' and s.charAt(i) <= 'Z') {
    upperCaseCount++;
}

答案 2 :(得分:2)

试试这段代码:

public static void main(String[] args) {
 Scanner sc = new Scanner(CapitalCount.class.getResourceAsStream("test.txt"));
 int upperCaseCount = 0;
 int linecount = 0;
 String lineInput = null;

 while (sc.hasNextLine()) {
  lineInput = sc.nextLine();
  linecount = lineInput .length();
  for(int i=0; i < linecount; i++)
      if (Character.isUpperCase(lineInput.charAt(i))) upperCaseCount++;
 }
 System.out.println(upperCaseCount + "");
}

答案 3 :(得分:1)

您应该使用Character.isUpperCase()方法而不是手动操作。

public static void main(String[] args) {
    try {
        Scanner sc = new Scanner(new File("test.txt"));
        int capitalCount = 0;
        int lineCount = 0;
        while(sc.hasNext()){
            lineCount++;
            String line = sc.nextLine();
            for(int i = 0 ; i < line.length(); i++){
                if(Character.isUpperCase(line.charAt(i))) {
                    capitalCount++;
                }
            }
        }
        System.out.println("Number of lines: "+lineCount);
        System.out.println("Number of capital letters: "+capitalCount);
    } 
    catch (FileNotFoundException e) {
        System.out.println(e.getMessage());
    }

}

答案 4 :(得分:0)

你有没有尝试用大写字母的模式调用“.next(Pattern pattern)”方法? 我认为你应该为每一行计算大写字母,所以之前进行循环..