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