javase第二十二講:隨機數

隨機生成50個數字(整數),每個數字的範圍是[10, 50],統計每個數字出現的次數以及出現次數最多的數字與它的個數,最後將每個數字及其出現次數打印出來,如果某個數字出現次數爲0,則不要打印它。打印時按照數字的升序排列。

方法一:使用數組實現

package Map;

import java.util.Random;

/**
 * @Auther: Xinbai
 * @Date:2020/6/4 21:45
 */
public class Test{
    public static void main(String[] args) {

        Random random = new Random();
        //count的下標0~40加10後就可以表示產生的隨機數10~50了
        int[] count = new int[41];

        for (int i = 0; i < 50; i++) {
            int number = random.nextInt(41) + 10;
           /*
24                          * 1.(number - 10)表示產生的隨機數在數組的位置
25                          * 2.count[number - 10]++;計算number出現的次數
26                          */
            count[number - 10]++;
        }

        for (int i = 0; i < count.length; i++) {
            if (0 == count[i]) {
                continue;
            }

            System.out.println((10 + i) + "出現次數:" + count[i]);
        }

        int max = count[0];
        for (int i = 0; i < count.length; i++) {
            if (max < count[i]) {
                max = count[i];
            }

        }

        System.out.println("出現的最大次數爲:" + max + "\n" + "出現最大次數的數字爲:");

        for (int i = 0; i < count.length; i++) {
            if (max == count[i]) {
                System.out.println(i + 10);
            }
        }
    }
}

在這裏插入圖片描述

方法二:使用集合實現

package Map;

import java.util.*;

/**
 * @Auther: Xinbai
 * @Date:2020/6/4 21:45
 */
public class Test {
    public static void main(String[] args) {
        //這邊使用TreeMap是因爲可以使用其自然順序排列,同時如果Map中不存在的元素也不會打印出來。
        Map map = new TreeMap(); //使用多態度,實際開發中這種寫法很常見
        Random random = new Random();
        for (int i = 0; i < 50; i++) {
            int number = random.nextInt(41) + 10; //生成[10,50]之間的隨機數

            /*
             * 使用Map中key用來存放隨機生成的數,value用來存放每個數字的次數。
             * 如果Map中的key(隨機生成的數字)不存在,則將其value(次數)置1,如果如果Map中的key(隨機生成的數字)存在,則將其value(次數)取出 + 1再放入value中
             */
            Integer in = new Integer(number);

            //判斷Map中key是不存在,value置1
            if (map.get(in) == null) {
                map.put(in, new Integer(1));
            }
            //否則,Map中的key存在,value取出 +1.
            else {
                int value = ((Integer) map.get(in)).intValue();
                map.put(in, new Integer(value + 1));
            }
        }

        //使用Collections類中max()打印出最多次數。
        Collection cols = map.values();
        Integer maxOccurs = (Integer) Collections.max(cols);

        //使用Map.Entry將封裝好的一對key與value值打印,這裏使用第二種遍歷Map的方式,詳細請參考前兩講內容。
        Set set = map.entrySet();

        List list = new ArrayList(); //定義一個集合用來保存最大的value對應的key
        for (Iterator iter = set.iterator(); iter.hasNext(); ) {
            Map.Entry entry = (Map.Entry) iter.next();
            Integer key = (Integer) entry.getKey();
            Integer value = (Integer) entry.getValue();

            //判斷value值是否做大,也就是出現最多,找出這個value,同時將其相對應的key保存在list中。
            if (value.intValue() == maxOccurs.intValue()) {
                list.add(key);
            }
            System.out.println(key + " : " + value);
        }

        System.out.println("出現次數最多的爲: " + maxOccurs);
        System.out.println("這些數字分別是: ");

        //遍歷List集合將最大value對應的key取出.
        for (Iterator iter = list.iterator(); iter.hasNext(); ) {
            Integer inte = (Integer) iter.next();
            System.out.println(inte);
        }
    }
}

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章