Java 计算数组中显示的整数数
我得到了一个100个随机元素数组,每个元素的范围在0-10之间,我需要计算每个整数的键入次数(例如,1,2,2,3,8,8,4…) 输出: 1-1 2-2 3-1 8-2 4-1 到目前为止,我的代码是: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
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
我所做的是:
添加此方法,该方法将进行计数:
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);
}
}