从键盘输入一个大小写英文字符串(不包含其他字符),统计每个字符出现的次数。如输入: abdead,则输出: a: 2 次 b: 1次 d: 2次 e: 1次

思路:

  1. 英文大小写首先联想到ascll码表,大写字母A-Z是65-90,小写字母a-z是97-122
  2. 每个大小写字符相当于一个数组的索引,所以我们先定义一个长度为123的数组
  3. 然后通过循环字符串得到每个字符的索引值charAt(i)
  4. 假如第一个字符是'a',对应ascll码表,那么它在数组的索引位置就是97
  5. 得到索引位置,它所对应的值就是他出现的次数,所以就是它本身加1
  6. 假如a出现了一次就是索引97的值是1次,再出现就是现在的索引值再加1
  7. 得到一个数组,因为英文字符都是从65开始的,所以数组前面的索引值会有很多0
  8. 最后再做个判断,如果索引对应的值不是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]);
			}
		}
		
	}

}

猜你喜欢

转载自blog.csdn.net/qq_45001053/article/details/119393803