原理:
- 将字符串转换成char字符数组
- 然后使用另一个数组存储
-
代码如下 public class CalChar { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String string = scanner.next(); char[] ch = new char[string.length()]; int[] nums = new int[26]; ch =string.toCharArray(); for (int i = 0; i < string.length(); i++) { nums[ch[i]-97]=ch[i]-97; //这里较为巧妙,将底层字母ascii码转换成数组下标 } } }
加强版:统计数字,大写字母,小写字母
import java.util.Arrays; import java.util.Scanner; public class CalChar { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String string = scanner.next(); char[] ch = new char[string.length()]; int[] lowNum = new int[26];// 小写字母 int[] upNum = new int[26];// 大写字母 int[] nums = new int[10];// 数字 ch = string.toCharArray(); for (int i = 0; i < string.length(); i++) { // 小写字母 a~z =97 ~(97+26) if (0 <= (ch[i] - 97) && (ch[i] - 97) <= 26) { lowNum[ch[i] - 97]++; } // 大写字母 A~Z =65 ~(65+26) if (0 <= (ch[i] - 65) && (ch[i] - 65) <= 26) { upNum[ch[i] - 65]++; } // 数字 0~9 = 48 ~ (48+26) if (0 <= (ch[i] - 48) && (ch[i] - 48) <= 9) { nums[ch[i] - 48]++; } } CalChar calChar = new CalChar(); calChar.lowCount(lowNum); System.out.println(); calChar.upCount(upNum); System.out.println(); calChar.count(nums); } public void count(int[] nums) { //数字计数 for (int i = 0; i < nums.length; i++) { if (nums[i] != 0) { System.out.print((char)(i+48)+":"+nums[i]+"个"+"\t"); } } } //小写字母计数 public void lowCount(int[] lowNum) { for (int i = 0; i < lowNum.length; i++) { if (lowNum[i] != 0) { System.out.print((char) (i+97) + ":" + lowNum[i] + "个"+"\t"); } } } //大写字母计数 public void upCount(int[] ch) { for (int i = 0; i < ch.length; i++) { if (ch[i] != 0) { System.out.print((char) (i+65) + ":" + ch[i] + "个"+"\t"); } } } }
来源:https://www.cnblogs.com/jeasion/p/10758345.html