思路:
- 英文大小写首先联想到ascll码表,大写字母A-Z是65-90,小写字母a-z是97-122
- 每个大小写字符相当于一个数组的索引,所以我们先定义一个长度为123的数组
- 然后通过循环字符串得到每个字符的索引值charAt(i)
- 假如第一个字符是'a',对应ascll码表,那么它在数组的索引位置就是97
- 得到索引位置,它所对应的值就是他出现的次数,所以就是它本身加1
- 假如a出现了一次就是索引97的值是1次,再出现就是现在的索引值再加1
- 得到一个数组,因为英文字符都是从65开始的,所以数组前面的索引值会有很多0
- 最后再做个判断,如果索引对应的值不是0,再打印
?代码实现:
package com.mm.job1;
import java.util.Arrays;
import java.util.Scanner;
public class Test6 {
public static void main(String[] args) {
// 从键盘输入一个大小写英文字符串(不包含其他字
// 符),统计每个字符出现的次数。如输入: abdead
// ,则输出: a: 2 次 b: 1次 d: 2次 e: 1次
//定义一个数组
int[] arr = new int[123];
Scanner sc = new Scanner(System.in);
//等待键盘输入
System.out.println("请输入一个英文字符串:");
String s = sc.next();
//遍历字符串,对数组进行赋值
for (int i = 0; i < s.length(); i++) {
arr[s.charAt(i)] = arr[s.charAt(i)]+1;
}
//排除数组中值为0的下标,最后输出有值的索引
for (int i = 0; i < arr.length; i++) {
if(arr[i] != 0) {
System.out.println((char)i + "的次数:" + arr[i]);
}
}
}
}
|