我为课程编写的一些代码遇到了一些麻烦。
我必须写一个随机数生成器,它对数字进行1到50、10000次运算,然后只打印出出现次数最多的前15个数字。除了打印出前15名的最高成绩外,我把所有事情都做对了。
这是我的完整代码块
package section4;
import java.util.Random;
public class Lottery {
public static void main(String[] args) {
Random rand = new Random();
int freq[] = new int[51];
for(int roll = 1; roll<1000000;roll++){
++freq[1+rand.nextInt(50)];
}
System.out.println("Lottery NumbertFrequency");
for(int face = 0; face<freq.length ;face++){
System.out.println(face+"t"+freq[face]);
}
}
}
我尝试过使用ArrayList。
我首先创建了ArrayList,然后将face和freq[face]添加到ArrayList中,然后打印ArrayList的元素。我把它累坏了,因为我认为我错了。
package section4;
import java.util.ArrayList;
import java.util.Random;
public class Lottery {
public static void main(String[] args) {
Random rand = new Random();
int freq[] = new int[51];
ArrayList<Integer> top = new ArrayList<Integer>(15);
for(int roll = 1; roll<1000000;roll++){
++freq[1+rand.nextInt(50)];
}
System.out.println("Lottery NumbertFrequency");
for(int face = 0; face<freq.length ;face++){
top.add(face);
top.add(freq[face]);
System.out.println(top);
}
}
}
我也尝试过更改"For Statement",但我也知道,将其更改为我只做的"告诉"编译器从0-15运行,而不是整个50。
for(int face = 0; face< 15 ;face++){}
有人能帮我吗,我怎么能只打印出15个最高的,因为我已经坚持了好几天了。
int[] b =Arrays.copyOf(freq, 5);
Arrays.sort(b);
for(int i = 0 ; i < 15 ; i++){
System.out.println(b[50 - i]);
}
您可以使用SortedMap将频率存储为Key,将数字存储为Value。然后,只需按照您想要的顺序在地图上迭代即可。