簡體   English   中英

如何從Java中的文件中隨機讀取N行

[英]How to read N number of lines from a file in java randomly

我對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的數字。

目前,如果我告訴我讀取前10個數字,我的代碼會打印出所有這些數字[1、2、3、4、5、6、7、8、9、10]。 我現在想做的是以隨機順序打印這些數字,例如[2、1、6、8、9、3、7、10、3、5]。

而且,如果可能的話,我想編寫一個代碼,隨機N次打印出前10個數字。 例如,以隨機順序打印出前10個數字50次。

感謝您的幫助,如果不清楚,請告訴我。

您可以將它們放入List ,然后使用Collections.shuffle方法。

將數字讀取到array ,然后將java.util.Random讀入數組並按需要打印(使用嵌套循環,每次訪問打印“ x”次)。 如果只想隨機打印,則可以使用Collections.shuffle進行隨機播放,然后簡單地遍歷結構並打印。

好吧,如果您的文件足夠小,則使用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

在將文件讀取到數組(或列表)時,應將數字存儲起來,然后A)隨機整理數組並打印出來,或者B)從數組中隨機選擇數字。 如果您不關心重復的數字(例如[2,1,6,1,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();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM