这不仅与字符串中的大写和小写有关。它是所有其他字符,既不是空格也不是字母!
我正在尝试获取我正在读取的文本文件的大写字母,小写字母,空格和其他字符的确切数字。 但是我没有得到我要搜索的确切值。 每次唯一能真正给我准确值的是小写字母。
我确实知道,根据我比较的字符,我也会得到不同的结果。但我不知道事物来自何处,何处结束。试图查看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);
}
}
答案 0 :(得分:2)
我建议使用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....
}