A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

import java.util.HashMap;
import java.util.Map.Entry;
import java.util.Scanner;
import java.util.Set;

/*
* 需求 :键盘录入一个"aababcabcdabcde",获取字符串中每一个字母出现的次数要求结果:a(5)b(4)c(3)d(2)e(1)
*/
public class test1 {
        public static void main(String[] args) {
                //键盘录入
                System.out.println("输入字符串");
                Scanner sc = new Scanner(System.in);
                String txt = sc.next();
                //把字符串根据a,b,c,d,e切割
                int numA = getNum(txt,"a");
                int numB = getNum(txt,"b");
                int numC = getNum(txt,"c");
                int numD = getNum(txt,"d");
                int numE = getNum(txt,"e");
                //创建Map集合
                HashMap<String, Integer> hashMap = new HashMap<>();
                hashMap.put("a", numA);
                hashMap.put("b", numB);
                hashMap.put("c", numC);
                hashMap.put("d", numD);
                hashMap.put("e", numE);
                Set<Entry<String, Integer>> entrySet = hashMap.entrySet();
                for (Entry<String, Integer> entry : entrySet) {
                        System.out.print(entry.getKey());
                        System.out.println(entry.getValue());
                }       
        }
        private static int getNum(String txt,String x) {
                String[] arr= txt.split(x);
                int num = arr.length -1 ;
                return num;
        }
}

3 个回复

倒序浏览
切割字符串的时候,因为e是最后一个字符,切割以后只有左半边,长度1,减一,0
回复 使用道具 举报 1 0
你的程序可以完成需求吗?不能吧,最后的字符顺序没有问题吗
回复 使用道具 举报 1 0
[Java] 纯文本查看 复制代码
import java.util.Scanner;
import java.util.TreeMap;

/**
 * @author AnCheng 需求 :
 *         键盘录入一个"aababcabcdabcde",获取字符串中每一个字母出现的次数要求结果:a(5)b(4)c(3)d(2)e(1)
 */
public class Test {

	private static Scanner sc;

	public static void main(String[] args) {

		sc = new Scanner(System.in);
		System.out.println("请输入一个字符串:");
		String line = sc.nextLine();

		// 因为输出需要有序,所以使用TreeMap
		TreeMap<Character, Integer> map = new TreeMap<>();
		// 遍历字符串
		for (int i = 0; i < line.length(); i++) {
			char c = line.charAt(i);
			// 如果c在map中,则把原来的数值加1并覆盖原来的数值,否则,将c添加进map中,将值设置为1
			map.put(c, map.containsKey(c) ? map.get(c) + 1 : 1);
		}

		for (Character key : map.keySet()) {
			int value = map.get(key);
			System.out.print(key + "(" + value + ")");
		}
	}

}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马