编写一个JAVA程序读取0到50(包含两者)范围内的任意多个整数,并且计算每项输入数据

编写一个JAVA程序,读取0到50(包含两者)范围内的任意多个整数,并且计算每项输入数据出现的次数。用一个该范围之外的值表明输入结束。当输入完成后,输出所有的值及其出现的次数。

public class Test {
    public static void main(String[] args) {
        Map<Integer, Integer> map = new HashMap<>();

        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入0到50范围的数(输入-1结束)");
        int num;
        // 输入 -1 则输入结束
        while ((num = scanner.nextInt()) != -1) {
            if (num < 0 || num > 50) {
                System.out.println(num + " 不在0到50范围,请重新输入");
                continue;
            }
            Integer count = map.get(num);
            map.put(num, count == null ? 1 : count + 1);
        }

        Set<Entry<Integer, Integer>> entrySet = map.entrySet();
        for (Entry<Integer, Integer> entry : entrySet) {
            System.out.println("数字 " + entry.getKey() + " 出现了 " + entry.getValue() + " 次");
        }
    }
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-04-15
package DemoA;

import java.util.Iterator;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeMap;

public class Main {
    /*
     * 使用集合TreeMap完成案例 TreeMap<key,value>的key值表示输入的数
     * value表示出现次数。
     *   自测已完美实现功能,看不懂再可以问我。
     */
    public static void main(String[] args) {
        MyNumber number = new MyNumber();
        Scanner scanner = new Scanner(System.in);
        int temp = 0;
        while (true) {
            System.out.println("请输入0-50(包括)之间的数:");
            temp = scanner.nextInt();
            if (temp >= 0 && temp <= 50) { // 判断输入值是否符合标准
                if (!MyNumber.map.containsKey(temp)) { // 判断集合中是否存在过该数
                    MyNumber.map.put(temp, 1); // 不存在输入的数
                } else { // 存在输入的数
                    int sum = MyNumber.map.get(temp);
                    MyNumber.map.put(temp, ++sum);
                }
            } else { // 跳出循环
                break;
            }
        }
        number.show(); //调用输出函数
//        System.out.println(MyNumber.map);
    }
}

class MyNumber{
    static TreeMap<Integer, Integer> map = new TreeMap<Integer, Integer>();
    private StringBuilder sb = new StringBuilder(); //字符缓冲区sb 用于存储字符串再输出
    public void show(){    
        Set<Integer> set = map.keySet();        //获取map中key的set集合
        Iterator<Integer> it = set.iterator();    //遍历set集合
        while(it.hasNext()){
            Integer keyTemp = it.next();
            sb.append("整数"+keyTemp+"--");    
            sb.append("输入"+map.get(keyTemp)+"次"+"   ");
        }
        System.out.println(sb.toString());
    }
}

相似回答