Java 计算数组中显示的整数数

Java 计算数组中显示的整数数,java,arrays,count,element,Java,Arrays,Count,Element,我得到了一个100个随机元素数组,每个元素的范围在0-10之间,我需要计算每个整数的键入次数(例如,1,2,2,3,8,8,4…) 输出: 1-1 2-2 3-1 8-2 4-1 到目前为止,我的代码是: import java.util.Random; public class Asses1 { public static void main(String[] args) { getNumbers(); } private static int

我得到了一个100个随机元素数组,每个元素的范围在0-10之间,我需要计算每个整数的键入次数(例如,1,2,2,3,8,8,4…)

输出:

1-1

2-2

3-1

8-2

4-1

到目前为止,我的代码是:

import java.util.Random;

public class Asses1 {
    public static void main(String[] args) {

        getNumbers();
      }

    private static int randInt() {
        int max = 10;
        int min = 0;

        Random rand = new Random();

        int randomNum = rand.nextInt((max - min) + 1) + min;
        return randomNum;
    }

    public static int[] getNumbers() {
        int number = 100;
        int[] array = new int[number];
        for (int i = 0; i < array.length; i++) {
            System.out.println(randInt());
        }

        System.out.println(number+" random numbers were displayed");
        return array;
    }

}
import java.util.Random;
公共类资产1{
公共静态void main(字符串[]args){
getNumbers();
}
私有静态int randInt(){
int max=10;
int min=0;
Random rand=新的Random();
int randomNum=rand.nextInt((最大-最小)+1)+min;
返回随机数;
}
公共静态int[]getNumbers(){
整数=100;
int[]数组=新的int[number];
for(int i=0;i
int[]array2=新的int[11];
for(int i=0;i
我所做的是:

  • 创建一个帮助数组array2,用于存储每个数字的出现次数
  • 生成数字时,增加帮助数组中的出现次数

  • 添加此方法,该方法将进行计数:

    public static void count(int[] x) {
        int[] c=new int[11];
    
        for(int i=0; i<x.length; i++)
            c[x[i]]++;
    
        for(int i=0; i<c.length; i++)
            System.out.println(i+" - "+c[i]);
    }
    
    另外,将
    getNumbers
    中的
    for
    循环更改为该循环,以便用生成的数字填充
    array
    ,而不仅仅是打印它们:

        for (int i = 0; i < array.length; i++) {
            array[i] = randInt();
            System.out.println(array[i]);
        }
    
    for(int i=0;i
    以下是如何在Java8中实现它

    // Retrieve the random generated numbers
    int[] numbers = getNumbers();
    // Create an array of counters of size 11 as your values go from 0 to 10
    // which means 11 different possible values.
    int[] counters = new int[11];
    // Iterate over the generated numbers and for each number increment 
    // the counter that matches with the number
    Arrays.stream(numbers).forEach(value -> counters[value]++);
    // Print the content of my array of counters
    System.out.println(Arrays.toString(counters));
    
    输出:

    [12, 11, 7, 6, 9, 12, 8, 8, 10, 9, 8]
    
    NB:您的方法
    getNumbers
    不正确,您应该将其修复为下一步:

    public static int[] getNumbers() {
        int number = 100;
        int[] array = new int[number];
        for (int i = 0; i < array.length; i++) {
            array[i] = randInt();
        }
    
        System.out.println(number+" random numbers were displayed");
        return array;
    }
    
    public static int[]getNumbers(){
    整数=100;
    int[]数组=新的int[number];
    for(int i=0;i
    Map Map=newhashmap();
    内部温度;
    for(int i=0;i
    这里可能有一些有用的东西:提示:您的方法getNumbers()。。。只返回0。仅仅打印到控制台并不能神奇地将数字放入数组。提示:从小处做起。最初不要选择100个条目。5点或10点就可以了。首先让你的代码工作,然后再去更大的数据集@Jägermeister似乎不知道这些评论和答案,他被告知他的getNumbers只返回零,但他仍然在正确答案下抱怨“如果我这样做,每个元素的输出将是:0(例如0-100;1-0,2-0,3-0等)”,尽管人们一直投票给你:你永远不应该只给出代码答案。您也总是解释发生了什么。@Xentros第一个循环是不必要的,数组被初始化为零。在第二个循环中,您修改了
    array
    而不是
    array2
    @xenteros OK,但实际上您没有将数字存储在
    array
    中。如何打印它们呢?Easili-for(int i=0;i<11;i++)System.out.println(String.valueOf(i)+“”+String.valueOf(array[i])@xenteros上一条注释中的
    for
    循环从0到10,然后打印
    array[i]
    <代码>数组
    的大小为100。此外,在代码中,
    数组中不存储任何内容。您只需使用
    randInt()
    的结果进行计数。如果我这样做,每个元素的输出将为:0(例如0-100;1-0,2-0,3-0等),这是因为您没有在
    getNumbers
    的循环中进行最后一次修改。这样做并检查正确性。您从
    getNumbers
    返回的数组都是零,因此结果是逻辑。他甚至不知道必须将值存储在数组中(因为他刚刚打印了这些值)。你认为他有机会理解这段代码,没有任何解释。嗯,不太可能。请注意:好的答案总是伴随着解释;不仅仅是代码。尤其是当你和一个新手交谈时;你真的不能指望他仅仅通过阅读代码就能“得到东西”。
    [12, 11, 7, 6, 9, 12, 8, 8, 10, 9, 8]
    
    public static int[] getNumbers() {
        int number = 100;
        int[] array = new int[number];
        for (int i = 0; i < array.length; i++) {
            array[i] = randInt();
        }
    
        System.out.println(number+" random numbers were displayed");
        return array;
    }
    
    Map<Integer,Integer> map=new HashMap<Integer,Integer>();
            int temp;
            for (int i = 0; i < array.length; i++) {
                temp=randInt();
                if(map.containsKey(temp)){
                    map.put(temp, map.get(temp)+1);
                }else{
                    map.put(temp, 1);
                }
            }