-
package 字符串;
import java.util.Scanner;
public class 统计 {
//字母个数 数字个数 空白字符个数 其他字符个数
public static void main(String[] args) {
// TODO 自动生成的方法存根
Scanner sc = new Scanner(System.in);
String a=sc.next();
String[] c=a.split("");
int count1=0;//数字
int count2=0;//字母
int count3=0;//其他字符
int count4=0;//空白字符
for(int i=0;ichar b=c[i].charAt(0);
int d=b;
if(d>=48&&d<=57) {
count1++;
}
else if(d>=64&&d<=90) {
count2++;
}
else if((d>=1&&d<=47)||(d>=91&&d<=95)||(d>=123&&d<=127)||(d==96)) {
count3++;
}
else if(d==0) {
count4++;
}
}
System.out.println("数字:"+count1);
System.out.println("字母:"+count2);
System.out.println("其他字符:"+count3);
System.out.println("空白字符:"+count4);
sc.close();
}
}
为什么他只能输出数字的个数输出不了字母其他字母空白字符的个数?
next只能读取一个值,如有空格不会再读取,所以使用nextLine。其次字母和空白符的判断方法不对。修改如下:
public static void main(String[] args) {
// TODO 自动生成的方法存根
Scanner sc = new Scanner(System.in);
String a=sc.nextLine();
int count1=0;//数字
int count2=0;//字母
int count3=0;//其他字符
int count4=0;//空白字符
//转为小写字母:
a = a.toLowerCase();
for(int i=0;i<a.length();i++) {
char b=a.charAt(i);
int d=b;
if(d>=48&&d<=57) {
count1++;
}
else if(d>=97&&d<=122) {
count2++;
}
else if(d==32) {
count4++;
}else {
count3++;
}
}
System.out.println("数字:"+count1);
System.out.println("字母:"+count2);
System.out.println("其他字符:"+count3);
System.out.println("空白字符:"+count4);
sc.close();
}
不能使用split("")来切分字符串,可以直接使用char数组来处理,char[] arr = str.toCharArray()
不知道你这个问题是否已经解决, 如果还没有解决的话:-Xss 为jvm启动的每个线程分配的内存大小,默认JDK1.4中是256K,JDK1.5+中是1M
-Xss1m
-Xss1024k
-Xss1048576
解决方案:
可以通过遍历输入的字符串,判断每个字符的类型来统计字符和字母的个数。在Java中,可以使用Character类提供的方法来判断字符的类型。具体步骤如下:
1.定义计数器变量countChar和countLetter,分别表示字符和字母的个数,初始化为0。
2.获取输入的字符串。
3.遍历字符串,对于字符串中的每个字符,判断它的类型:
4.输出countChar和countLetter。
下面是示例代码:
public class CountChars {
public static void main(String[] args) {
int countChar = 0; // 字符计数器
int countLetter = 0; // 字母计数器
String str = "Hello, World! 123"; // 测试字符串
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if (Character.isLetter(c)) {
countLetter++;
} else if (!Character.isWhitespace(c)) {
countChar++;
}
}
System.out.println("字符个数:" + countChar);
System.out.println("字母个数:" + countLetter);
}
}
运行结果:
字符个数:12
字母个数:10
其中,Character.isLetter(c)用于判断字符c是否是字母,返回一个boolean值;Character.isWhitespace(c)用于判断字符c是否是空格符,返回一个boolean值。