2012-12-11 56 views
-1

可能重複:
Java RandomString Class劊子手RandomString類

這裏是方向:

創建一個RandomString類並實現如下:

  1. 創建一個名爲guess_phrases.txt的文件,其中包含要在Hangman遊戲中猜中的短語。這個文件每行有一個猜測短語。

  2. 一個構造函數,它接收文件的名稱以獲取字符串值。構造函數應該讀取文件中的短語並存儲起來以備後用。

  3. 從文件返回隨機字符串值的方法;在使用文件中的所有猜測短語之前,不應重複此值。

創建,測試,明年一個主要方法是通過反覆調用next &打印結果正常工作 - 你不應該有任何重複,和短語不應該在同一順序的文件中。

我用隨機短語創建了一個名爲guess_phrases.txt的文件。當我運行這個時,我得到一個錯誤,也沒有隨機打印,爲什麼這是?我怎樣才能解決這個問題 ?

錯誤 異常在線程 「主」 java.lang.IllegalArgumentException異常:n必須是正

at java.util.Random.nextInt(Unknown Source) 
at RandomString.next(RandomString.java:32) 
at RandomString.main(RandomString.java:40) 

這是我在RandomString類

public class RandomString { 

    Random random = new Random(); 
    ArrayList<String> guessPhrases = new ArrayList<String>(); 
    Scanner fileScan; 

    public RandomString(String guessPhrases) throws FileNotFoundException { 

     // create a Scanner object to read from the file 
     fileScan = new Scanner(new File("guess_phrases.txt")); 

     // add all of the phrases from the file into the ArrayList 
     while (fileScan.hasNext()) { 

      String line = guessPhrases.nextLine(); // get input 
      System.out.println(line); // print line 
      guessPhrases.add(line); // add line to array list 
     } 
    } 

    public String next() { 
     int i = random.nextInt(guessPhrases.size()); 
     return guessPhrases.get(i); 
    } 

    public static void main(String[] args) { 

    } 
} 
+1

那你的[完全同樣的問題(http://stackoverflow.com/questions/13817886/java-randomstring-class)? – Kai

回答

0

Random API

你可以看到,如果你傳遞一個數字或零到nextInt(pos),它會拋出一個非法ArgumentException

int i = random.nextInt(guessPhrases.size());

最絕的是guessPhrases.size(),因此異常