用户通过键盘指定一个字符串,然后由程序来统计并输出在该字符串中每个字符出现的次数
2020-06-05 08:13
288 查看
题目:编写程序String_Count.java,由用户通过键盘指定一个字符串,然后由程序来统计并输出在该字符串中每个字符出现的次数。
这类题目有很多种方法:
(1)可以使用map等集合方法,通过键-值匹配的方式匹配字母及其个数
(2) 使用二维数组来储存对应字母和个数
但是经过创新思考,总结出了一种最简单的方法,就使用一维数组来实现,而且效率还不错,试用性广,在这里分享给大家这种方法,希望对大家有所帮助!
package ex07_new; import java.util.Scanner; /** * 改进版之用最简单的数组方法实现: * @content:用户通过键盘指定一个字符串,然后由程序来统计并输出在该字符串中每个字符出现的次数 * @author:H烊X */ public class String_Count { static int[] symbolNum;// 对于个数的存储,最后输出统计结果 public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("请随便输入一串字符:"); String s = input.nextLine(); symbolNum = new int[s.length()]; find(s);// 查找有哪些字母出现过 print(s);// 打印信息 input.close(); } public static void find(String s) { for (int i = 0; i < s.length(); i++) { //抽取本身单个字符,逐一查找是否重复出现,出现就记录 for (int j = 0; j < s.length(); j++) { if (s.charAt(i) == s.charAt(j)) { symbolNum[i]++; //注意这里的会把出现过的字符个数重复统计,只要在输出的时候剔除即可 } } } } public static void print(String s) { System.out.println("输入的字符串中字母统计个数如下:"); for (int i = 0; i < s.length(); i++) { if (symbolNum[i] > 0) { System.out.println("‘" + s.charAt(i) + "’" + "的个数是:" + symbolNum[i]); //对上面打印过的字符输出后,剔除后面重复打印的即可 for (int j = 0; j < s.length(); j++) { if (s.charAt(i) == s.charAt(j)) { symbolNum[j] = 0; } } } } } }
运行结果:
注:这里的 ‘ ’代表输入的是空格!
还有因为是改进版的,我那个控制台输出语句说“字母”实际是每个“字符”
标题改进版之:不区分大小写版+减少循环
package ex07_new; import java.util.Scanner; /** * 用最简单的数组方法实现: * @content:用户通过键盘指定一个字符串,然后由程序来统计并输出在该字符串中每个字符出现的次数 * @author:H烊X * @修改原因:课堂测验,修改内容:完善BUG */ public class String_Count { static int[] symbolNum;// 对于个数的存储,最后输出统计结果 public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("请随便输入一串字符:"); String s = input.nextLine(); symbolNum = new int[s.length()]; find2(s);// 查找有哪些字母出现过 print(s);// 打印信息 input.close(); } /*分析案例: s--------- | N | N | n | _ _ _ | n | h | o | symbolNum[i] = 0 0 0 0 0 0 0 0 0 4 -1 -1 3 -1 -1 -1 1 1 */ public static void find2(String s) { for (int i = 0; i < s.length(); i++) { //对于已经查过的字符已被记录(用-1记录),当循环被记录的字符时,直接跳过,更加高效 if(symbolNum[i]<0) continue; //抽取本身单个字符,逐一查找是否重复出现,出现就记录 for (int j = 0; j < s.length(); j++) { if(i==j) symbolNum[i]++; //由于初始,默认为0,自身时要+1 if (String.valueOf(s.charAt(i)).equalsIgnoreCase(String.valueOf(s.charAt(j)))&& i != j) { symbolNum[i]++; //记录已经算过的字符: symbolNum[j] = -1; } } } } public static void print(String s) { System.out.println("输入的字符串中字母统计个数如下:"); for (int i = 0; i < s.length(); i++) { // 直接打印即可: if (symbolNum[i] > 0) { System.out.println("‘" + s.charAt(i) + "’" + "的个数是:" + symbolNum[i]); } } } }
运行结果:
相关文章推荐
- python通过键盘输入一串小写字母(a~z)组成的字符串,编写一个测试程序,将字符串中连续出现的重复字符删去(即在一个字符串中,如果遇到连续重复的字符只出现一次),然后输出处理后的字符串。
- 统计一个字符串中每个字符出现的次数,并按出现的次数降序输出统计结果
- 使用集合键盘录入一个字符串,统计每个字符出现的次数-----例题
- 通过键盘输入一个字符串,判断字符串中出现最多的字符并输出该字符和输出出现次数
- 从文件读取包含数字和字母字符串,统计每个字符出现的次数,将次数输出到另外一个文件
- 输入一个字符串,然后按照ascll码排序并且在输出的每个字符后面跟上本字符在字符串中出现的次数
- 请编写一个程序,用于统计字符串中每个字母的出现次数(字母忽略大小写),统计出结果后,请按照{'a':3,'b':2}的格式输出。
- 手动输入一个字符串,仅限小写字母,统计并输出每个字符在字符串中出现的次数,并输出。
- 请编写一个程序,输入一个由小写字母和其他字符构成的序列字符串保存在tt中,统计“a”到“z”26个字母各自出现的次数,并依次保存在pp数组中,并输出pp数组内容。
- 在一个字符串中找到出现指定次数的字符,根据用户输入次数,打印出现次数为该次数的字符。如输入abaccedff及1,则输出:b e d 如输入abaccedff及2,则输出:a c f
- 统计一个字符串中每个字符出现的次数,并按自然顺序输出
- 通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串。 压缩规则: 1、仅压缩连续重复出现的字符。比如字符串"abcbc
- 华为机试题---统计并输出每个字符在字符串中出现的次数
- Java Map集合练习( 定义一个字符串,统计字符串中每个字符出现的次数!)
- 统计一段文字中每个字符出现的次数,并输出结果(包含字符及其出现次数)保存在一个适合的集合中。
- 编写一个程序统计输入字符串中:各个数字,空白字符,以及其他所有字符常出现的次数。
- C语言:编写一个程序统计输入字符串中,各个数字、空白字符、以及其他所有字符出现的次数。
- 统计一个字符串中每个字符出现的次数
- 中文字符频率统计。编写一个程序,对给定字符串中出现的全部字符(含中文字符)频率进行分析,采用降序方式输出
- 把当前文件中的所有文本拷贝,存入一个txt文件,统计每个字符出现的次数并输出