我遇到了一些我必须为我的课程编写的代码遇到了一些麻烦。
我不得不写一个随机数生成器,它通过数字运行一到五十万次,然后只打印出前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 Number\tFrequency");
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 Number\tFrequency");
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个,因为我已经坚持了好几天。
答案 0 :(得分:1)
int[] b =Arrays.copyOf(freq, 5);
Arrays.sort(b);
for(int i = 0 ; i < 15 ; i++){
System.out.println(b[50 - i]);
}
答案 1 :(得分:0)
您可以使用SortedMap将频率存储为密钥,将数字存储为值。然后按照您想要的顺序迭代地图。