2015-05-26 51 views
0

對Java很新穎(只有幾天學習)我正在尋找一個隨機引用程序。我在文件quotes.txt中的單獨行上有引號。我需要做的是抓住一條隨機線並打印出來。如何從文本文件中抓取一行隨機文本並打印該行

我想要的步驟是首先確定文件中的行數,然後生成一個介於0和行數之間的隨機數。然後轉到文件中的那一行並打印出來。

我只是不知道如何真正開始真正(再次,原諒我,對Java來說很新)。任何幫助深表感謝。

+3

[見本](http://stackoverflow.com/questions/2218005/how-to-get-a-random-line-of-a-text-in-java) – SerCrAsH

+0

使用數據庫可能會使這更容易 – ControlAltDel

+1

@ControlAltDel請解釋。不知道如何可能使這更容易。聽起來不必要的複雜。 – tnw

回答

1

這是一個快速的想法。注意我沒有測試過這個代碼。把它放在一起真的很快......而且這僅僅適用於小文件。如果你需要處理大量的數據,那麼我建議只讀取感興趣的文件(基於隨機)並只處理該行。此外,其他的庫​​可以與此問題(例如,Apache的公地:FileUtils.readLines(文件)獲得(indexNumber))特異性幫助

FileInputStream fs= new FileInputStream("quotes.txt"); 
BufferedReader br = new BufferedReader(new InputStreamReader(fs)); 
ArrayList<String> array = new ArrayList<>(); 
String line; 
while((line = br.readLine()) != null) 
    array.add(line); 
// variable so that it is not re-seeded every call. 
Random rand = new Random(); 

// nextInt is exclusive. Should be good with output for array. 
int randomIndex = rand.nextInt(array.size()); 

// Print your random quote... 
System.out.println(array.get(randomIndex)); 
+0

非常感謝! – quibblify

2

我會做的是創建一個ArrayList,並在那裏添加行。獲取介於0和(ArrayList -1的大小)之間的隨機數,並獲取存儲在該索引處的信息的值。我會留下代碼供您嘗試解決,但是當您發佈已編寫的代碼時,我會提供幫助。

0
  1. 將文件讀入Listarray。 A ScannerBufferedReader可以做到這一點。
  2. 使用Random類生成一個介於0(含)和數組/列表(不包括)之間的隨機數。
  3. 使用(2)的結果從(1)中訪問數組/列表中該元素的索引。
相關問題