不要原版抄袭,可查看逻辑。题目非原创。。。
问题描述:
从键盘输入一行英文字符串,只统计字符串中出现的每个英文字母的个数。大小写字母算相同的字符,不做区分,例如a和A,算相同字符。
【输入形式】
输入一行英文字符串。
【输出形式】
以合适的形式输出每个英文字母出现的次数,没有出现的字母,不输出次数。
【样例输入①】
hello,world.
【样例输出①】
(D)Num=1
(E)Num=1
(H)Num=1
(L)Num=3
(O)Num=2
®Num=1
(W)Num=1
【样例输入②】
this is a pen,that is a circle.
【样例输出②】
(A)Num=3
©Num=2
(E)Num=2
(H)Num=2
(I)Num=4
(L)Num=1
(N)Num=1
§Num=1
®Num=1
(S)Num=3
(T)Num=3
实验结果:
import java.util.Locale;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String str = in.nextLine().toLowerCase(Locale.ROOT);//全部准换为小写,便于判断,也可以转换为大写。大写后下面就需要改变。
char[] ch = new char[str.length()];
for (int i = 0; i < ch.length; i++) {
ch[i] = str.charAt(i);
}
chars(ch);
in.close();
}
public static void chars(char[] ch){
int[] count = new int[26];//定义26个数组,分别对应a-z,用来统计不同字母的个数。
for (char j = 97; j <= 122; j++) {//a-z 的过程。
for (int i = 0; i < ch.length; i++) {
if (ch[i]==j){
count[j-97]++;//对应字母的个数加一,只能是0-25。要和j相关。25-(122-j)=j-97
}
}
}
for (int i = 0; i < 26; i++) {
if (count[i]!=0){
System.out.println("("+(char)(65+i)+")Num="+count[i]);
}
}
}
}