题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
对于这个题目首先我们要知道一行字符,就是String类型的,我们要从键盘输入一行字符,要用到Scanner,而这里还要用到Scanner的一个方法,这个方法比较特殊是nextLine方法。你是要统计其中的这些不同的东西,所以要把这个字符串先转变的char类型的数组,而后再进行操作,对于我个人来说我是先在百度上搜索一些判断的方法函数,而后借助循环和变量自加的方法来做的直接上代码:
import java.util.Scanner;
//统计字符个数
public class Statistics {
public static void main(String [] args) {
int letter = 0; //字母
int space = 0; //空格
int num = 0; //数字
int other = 0; //其他
System.out.println("请输入字符串");
Scanner scanner = new Scanner(System.in);
String examString = scanner.nextLine();
// System.out.println(examString);
char a[] = examString.toCharArray();
for(int i =0;i<a.length;i++) {
if(Character.isDigit(a[i])) { //数字
num++;
}
else if(Character.isSpaceChar(a[i])) { //空格
space++;
}
else if(Character.isLetter(a[i])) { //字母
letter++;
}
else { //其他
other++;
}
}
System.out.println("字母共有"+letter+"个,"+"空格共有"+space+"个,"+"数字共有"+num+"个,"+"其他共有"+other+"个");
}
}
结果如下:
中间我输入了一个空格。
老规矩来看一波大神代码
public static void no7(String str) {
//abc {'a','b','c'}
char [] chars = str.toCharArray();
int lettersCount = 0;//字母的个数
int spaceCount = 0;//空格的个数
int numCount = 0;//数字的个数
int otherCount = 0;//其他的个数
//高级循环 foreach 循环数组和集合
for(char c: chars) {
if(('a'<=c && 'z'>=c) || 'A'<=c && 'Z'>=c) {
lettersCount++;
}else if(c == ' ') {
spaceCount++;
}else if(c >='0' && c<='9') {
numCount++;
}else {
otherCount++;
}
}
System.out.println("数字有"+numCount+"\n字母有"+lettersCount+"\n空格有"+spaceCount+"\n其他有"+otherCount);
}
这里大神没有用那种判断方法,因为大神倾向于用比较少的语言知识来实现我们目前的这个程序。大家可能不太理解这一段代码
if(('a'<=c && 'z'>=c) || 'A'<=c && 'Z'>=c)
可能会想字母是怎么比较大小的,这里就涉及到一个东西ASCII码,具体这个东西大家可以自行百度谷歌。目前这个阶段我是以就业和毕业为目的。所以这个东西我就不先入手了。后续等我工作了,我会补上一些很底层,很基础的知识。