黑马程序员技术交流社区

标题: 求帮助HashMap,为什么我输出结果e是0个. [打印本页]

作者: LoneRan9er    时间: 2016-9-16 23:18
标题: 求帮助HashMap,为什么我输出结果e是0个.
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;
        }
}


作者: somnus-sir    时间: 2016-9-17 09:52
切割字符串的时候,因为e是最后一个字符,切割以后只有左半边,长度1,减一,0
作者: ancheng    时间: 2016-9-17 10:05
你的程序可以完成需求吗?不能吧,最后的字符顺序没有问题吗
作者: ancheng    时间: 2016-9-17 10:13
[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 + ")");
                }
        }

}





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2