首页 > 解决方案 > 计算大写字母、小写字母、空格和其余部分(数字等)

问题描述

这不仅仅是关于字符串中的大写和小写。它是关于不是空格或字母的所有其他字符!

我正在尝试获取我正在阅读的文本文件的大写字母、小写字母、空格和其他字符的确切数量。但是,我没有得到我正在搜索的确切值。唯一真正每次都给我确切值的是小写字母。

我确实知道,根据我比较的字符,我也会得到不同的结果。但我不知道事情是从哪个角色开始的,又从哪个角色结束。试图查看 ASCII 表以获得答案,但这还不够。

以这种方式尝试过,下面的代码,以及通过 forloop 测试数组中字符的 if 语句。

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
class test {
    public static void main(String args[]) throws IOException {
    FileReader file = new FileReader("C:\\Users\\karwa\\Desktop\\kq.txt");
    BufferedReader read = new BufferedReader(file);
    int upper = 0, lower = 0, number = 0, special = 0;
    boolean ch;
    while (ch = read.read() != -1) {
        for (char c : read.readLine().toCharArray()) {
            char ch1 = c;
            if (ch1 >= 'A' && ch1 <= 'Z')
                upper++;
            else if (ch1 >= 'a' && ch1 <= 'z')
                lower++;
            else if (ch1 >= '0' && ch1 <= '9' || ch1 >= '!' && ch1 <= '-')
                number++;
            else
                special++;
        }
    }
    System.out.println("Upper case letters : " + upper);
    System.out.println("Lower case letters : " + lower);

    System.out.println("Whitespaces : " + special);
    System.out.println("Others : " + number);
}
}

标签: java

解决方案


我建议使用Character.isUpperCase, Character.isLowerCase, Character.isDigit, Character.isWhitespace:

for (char c : read.readLine().toCharArray()) {                  
      if(Character.isUpperCase(c)) upper++;
      else if (Character.isLowerCase(c))lower++;
      else if (Character.isDigit(c)) number++;
      else if (Character.isWhitespace) whitespace++;
      else // anything else....
}

推荐阅读