有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如果生成了随机数,如何提高计数器的值?

基本上,我有一个50个随机数的数组,如果我得到相同的随机数,我想增加计数。在所有这些计数之后,我想看看我多久得到一次哪个数字,但我的计数方法似乎有一个错误。所以它基本上给了我,例如,比随机生成的数字中更多的零

这是我的程序代码:

import java.util.Random;

public class aufgabe2 {

  static int[] ran = new int[50];
  static int[] counter = new int[10];

  static Random r = new Random();

  public static void ranNums() {
    for (int i = 0; i < ran.length; i++) {
      ran[i] = r.nextInt(10);
      System.out.print(ran[i] + " ");
    }
  }

  public static void countSameRanNums(int[] counter) {
    System.out.println();
    for (int i = 0; i < 9; i++) {
      counter[ran[i]]++;
      System.out.println(i + ".frequency: " + (counter[ran[i]]));
    }
  }

  public static void main(String[] args) {
    ranNums();
    countSameRanNums(ran);
  }
}

共 (2) 个答案

  1. # 1 楼答案

    您遇到的问题是,您只迭代ran数组的前9个位置,即50个位置

    此外,我认为不需要两种方法来获得每个随机数的计数。您可以在获得随机值的同时对其进行计数。看看这个:

    public static void ranNums() {
       for (int i = 0; i < ran.length; i++) {
          ran[i] = r.nextInt(10);
          System.out.print(ran[i] + " ");
          counter[ran[i]]++;
       }
    }
    

    在你只需要做一个循环就可以得到所有的计数:

    for(int j = 0; j < counter.length; j++)
    {
        System.out.println(j + ".frequency: " + (counter[j]));
    }
    
  2. # 2 楼答案

    import java.util.Random;
    
    public class aufgabe2 { 
    static int[] ran = new int[50];
    static int[] counter = new int[10];
    
    static Random r = new Random();
    
    public static void ranNums() {
    int counter;
    Map<Integer,Integer> map = new HashMap<Integer,Integer>();
    for (int i = 0; i < ran.length; i++) {
        counter = 1;
        ran[i] = r.nextInt(10);
        if(map.containsKey(ran[i])){
            map.put(ran[i], map.get(ran[i])+1);
        } else {
            map.put(ran[i], counter);
        }
    }
    
        Iterator<?> it = map.entrySet().iterator();
        while (it.hasNext()) {
            Map.Entry pair = (Map.Entry)it.next();
            System.out.println(pair.getKey() + " frequency : " + pair.getValue());
        }
    }
    
    public static void main(String[] args) {
        ranNums();
       }
    }
    

    如果您需要以上任何解释,请告诉我