我对java很新,所以如果我做错了,请耐心等待。我在java中编写了一个代码,它从java中的文件中读取N行,并将其放入double数组中,然后将其打印出来;
ArrayList<Double> numbers = new ArrayList<Double>();
Scanner read = new Scanner(new File("numberfile"));
int counter = 0;
while(read.hasNextLine() && counter < 10)
{
System.out.println(read);
counter++;
}
该文件包含1到100个数字;
目前,我的代码打印出所有这些数字[1,2,3,4,5,6,7,8,9,10],如果我告诉它读取前10个数字。我现在要做的是以随机顺序打印出这些数字,例如[2,1,6,8,9,3,7,10,3,5]。
如果可能的话,我想编写一个代码,可以随机打印出前10个数字N次。例如,以随机顺序打印前10个数字50次。
感谢您的帮助,如果我不清楚,请告诉我。
答案 0 :(得分:0)
您可以将它们放入List
,然后使用Collections.shuffle方法。
答案 1 :(得分:0)
将您的号码读入array
和java.util.Random以访问您的阵列并按照您的意愿进行打印(使用嵌套循环进行打印&#39; x&#39;每次访问次数) 。如果您只想随机打印,可以使用Collections.shuffle进行随机播放,然后只需遍历结构并进行打印。
答案 2 :(得分:0)
好吧,如果您的文件足够小,使用Java 7很容易:
final Path thefile = Paths.get("whereyourfileis");
final List<String> lines = Files.readAllLines(thefile, StandardCharsets.UTF_8);
Collections.shuffle(lines);
// lines.sublist(0, 10) --> done
答案 3 :(得分:0)
您应该在将文件读入数组(或列表)时存储数字,然后A)将数组洗牌并打印出来,或者B)从数组中随机选择数字。如果您不关心重复的数字(例如,[2,1,6,1,1,1,2]),您可以使用Math.Random()随机选择10个项目。否则,按如下方式读入List(您已经有一个名为numbers的ArrayList):
while(read.hasNextLine() && counter < 10)
{
numbers.add(read.nextDouble());
counter++;
}
for (int n = 0; n < 50; n++) {
Collections.shuffle(numbers);
for (int i = 0; i < numbers.size(); i++) {
System.out.println(numbers.get(i));
}
System.out.println();
}