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);
不知道你是不是想要这种结果