输入一行字符,统计其中字母、数字、空格、其它字符的数量,并输出到控制台

输入一行字符,统计其中字母、数字、空格、其它字符的数量,并输出到控制台

package String;

import java.util.Scanner;

public class numbersCount {

public static void main(String[] args) {
    // TODO 自动生成的方法存根
    Scanner sc = new Scanner(System.in);
    System.out.println("请输入您要统计的字符串:(按回车键结束输入)");
    String str = sc.nextLine();
    int letterCount=0,numberCount=0,spaceCount=0,otherCount=0;
    for (int i = 0; i < str.length(); i++) {
        char c = str.charAt(i);
        if(c<='z'&&c>='a'||c<='Z'&&c>='A') {
            letterCount++;
        }else if(c<='9'&&c>='0'){
            numberCount++;
        }else if(c==' '){ 
            spaceCount++;
        }else{
            otherCount++;
        }

    }
    System.out.println("字母有"+letterCount+"个");
    System.out.println("数字有"+numberCount+"个");
    System.out.println("空格有"+spaceCount+"个");
    System.out.println("其它有"+otherCount+"个");

    }
}

以上是正确的,下面我贴出一组错误代码,有兴趣的分析下以下代码错在了哪里,为什么错了
package String;

import java.util.Scanner;

public class numbersCount {

public static void main(String[] args) {
    // TODO 自动生成的方法存根
    Scanner sc = new Scanner(System.in);
    System.out.println("请输入您要统计的字符串:(按回车键结束输入)");
    String str = sc.nextLine();
    int letterCount=0,numberCount=0,spaceCount=0,otherCount=0;
    for (int i = 0; i < str.length(); i++) {
        char c = str.charAt(i);
        if(c<='z'&&c>='a'||c<='Z'&&c>='A') letterCount++;
        if(c<='9'&&c>='0') numberCount++;
        if(c==' '){ 
            spaceCount++;
        }else{
            otherCount++;
        }

    }
    System.out.println("字母有"+letterCount+"个");
    System.out.println("数字有"+numberCount+"个");
    System.out.println("空格有"+spaceCount+"个");
    System.out.println("其它有"+otherCount+"个");

}
}

答:错在了otherCount,因为上述代码是把除空格外的所有字符都进行统计,包括了字母和数字,而题目要求是不要字母和数字统计到其它里面的。

点赞