输入一行字符,分别统计其中英文字母,空格,数字,和其他字的个数。

import java.util.Scanner;
/*
输入一行字符,分别统计其中英文字母,空格,数字,和其他字的个数。
*/
public class C1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一串字符:");
String str = sc.nextLine();
//规定一个计数器,以表示字符在输入字符串中的重复次数
int count = 1;
//被比较的字符
char comparedKey;
//下一个字符
char nextKey;
//上一个字符
char preKey;

    F1:
    for (int i = 0; i < str.length(); ++i) {
        //遍历取出输入字符串中的单个字符
        comparedKey = str.charAt(i);
        for (int j = i + 1; j < str.length(); ++j) {
            //遍历取出输入字符串的下一个字符
            nextKey = str.charAt(j);
            //字符相等时,计数器加1
            if (nextKey == comparedKey) ++count;
        }
        for (int j = i - 1; j > 0; --j) {
            //遍历取出输入字符串的上一个字符
            preKey = str.charAt(j);
            //当前字符与之前的字符存在相等字符时,跳过当前循环
            if (preKey == comparedKey) {
                count = 1;
                continue F1;
            }
        }
        System.out.println(comparedKey + "字符出现的次数:" + count);
        //重置计数器
        count = 1;
    }
    sc.close();
}

}

//输出结果:
//结果会莫名其妙多出一次相同字符输出
请输入一串字符:
dsadasc das
d字符出现的次数:3
s字符出现的次数:3
a字符出现的次数:3
d字符出现的次数:2
c字符出现的次数:1
字符出现的次数:1

题目要求:输入一行字符,分别统计其中英文字母,空格,数字,和其他字的个数。
这样实现有些不符合题意啊,没必要分d s a 字符 直接统计所有字母 空格 数字 和其它的 数量就可以了。

希望对题主有所帮助!可以的话,帮忙点个采纳!

将输入的字符串转化为数组,放到一个集合中。然后用stream流计算出结果。

        String  s="a b cdefg k";
        char[] ch =s.toCharArray();
        System.out.println(ch);
        List<Character> list = new ArrayList<>();
        for (Character character:ch){
            list.add(character);
        }
        System.out.println(list);

        Map<Character, Long> result = list.stream().collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
        System.out.println(result);

img

不知道你是不是想要这种结果