计算大写字母,小写字母,空格和其余(数字等)

时间:2019-01-02 15:41:47

标签: java

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

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

我确实知道,根据我比较的字符,我也会得到不同的结果。但我不知道事物来自何处,何处结束。试图查看ASCII表以获得答案,但这还不够。

已经以这种方式尝试了下面的代码,并使用了if语句来测试forfor循环数组中的字符。

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

1 个答案:

答案 0 :(得分:2)

我建议使用Character.isUpperCaseCharacter.isLowerCaseCharacter.isDigitCharacter.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....
}