Java 计算大写字母、小写字母、空格和其他(数字等)

Java 计算大写字母、小写字母、空格和其他(数字等),java,Java,这不仅仅是关于字符串中的大小写。它是关于每一个不是空白或字母的字符 我正在尝试获取我正在读取的文本文件的大写字母、小写字母、空格和其他字符的确切数字。 但是,我没有得到我搜索的确切值。 实际上每次给我精确值的唯一东西是小写 我知道,根据我比较的字符,我也会得到不同的结果。但我不知道事情从哪个角色开始,从哪个角色结束。试图查看ASCII表以获得答案,但这还不够 以这种方式尝试了下面的代码,并使用if语句测试通过forloop的数组中的字符 import java.io.BufferedReader

这不仅仅是关于字符串中的大小写。它是关于每一个不是空白或字母的字符

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

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

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

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.io.BufferedReader;
导入java.io.FileNotFoundException;
导入java.io.FileReader;
导入java.io.IOException;
课堂测试{
公共静态void main(字符串args[])引发IOException{
FileReader file=newFileReader(“C:\\Users\\karwa\\Desktop\\kq.txt”);
BufferedReader read=新的BufferedReader(文件);
整数上限=0,下限=0,数字=0,特殊=0;
布尔ch;
while(ch=read.read()!=-1){
for(字符c:read.readLine().toCharArray()){
char ch1=c;

如果(ch1>='A'&&ch1='A'&&ch1='0'&&ch1='!'&&ch1,我建议使用
字符.isUpperCase
字符.isLowerCase
字符.isDigit
字符.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....
}

我建议使用
字符.isUpperCase
字符.isLowerCase
字符.isDigit
字符.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....
}

“| ch1>=”!&&ch1如果你有一个问题没有得到预期的结果,即字母数,你还应该包括你期望的数字和你得到的数字。这使得回答更容易、更快。否则你的问题几乎完全是“| ch1>=”!&&ch1的重复ch1如果你有一个你没有得到预期结果的问题,即字母的数量,你还应该包括你期望的数字和你得到的数字。这使得回答更容易和更快。否则你的问题几乎是完全重复的,甚至我的意思是它几乎是正确的。然而,这也是我没有做到的第一次是他的。它没有给我正确的答案。@AxwellSmith然后你必须确切地说明你看到的结果和你期望的结果。好的。我得到的小写字母是3715,这是正确的。但是大写字母给我77,但它们应该是86。空格给我743,但是如果变量
special
仅用于跟踪空格,那么为什么不只包含空格检查,而不是将其放入
else
块中?查看您的打印语句
System.out.println(“空格:+special”);System.out.println(“其他:+编号);}
您正在为空白打印
特殊的
,为其他人打印
数字
…您的计数是关闭的,77+743+109=929和86+728+111=925。我的意思是这几乎是正确的。但是这也是我第一次这样做的。它没有给我正确的答案。@AxwellSmith然后您必须准确地指定它你看到的结果和你期望的结果。好吧。我得到的小写字母是3715,这是正确的。但是大写字母给我77,但它们应该是86。空格给我743,但应该是728。剩下的我得到109,但我应该得到111。@AxwellSmith,如果变量
特别的话
仅用于跟踪空白,那么为什么不只包含空白检查,而不是将其放入
else
块中?请查看打印语句
System.out.println(“空白:+special”);System.out.println(“其他:+number);}
您正在为空白打印
特殊
,为其他人打印
数字
…您的计数为关闭,77+743+109=929和86+728+111=925。