2013-01-02 142 views
2

所以我新的Java和我亂投醫,不能正常工作。有很多不同的方法可以從文件中讀取,所以我想知道最簡單的方法。基本上,這是一個Mad Libs應用程序。一種方法。我一直試圖成功運行,並且在file.close()函數上出現錯誤。如果我把它拿走,我得到FileNotFoundException errors。所以我有點失落。我應該改變什麼?從文本文件Java中讀取行?

public static void main(String[] args) throws Exception { 
    String[] nouns = new String[4]; 
    String[] verbs = new String[6]; 
    String[] adjectives = new String[7]; 
    Scanner s = new Scanner(System.in); 
    System.out.println("Please input 4 nouns, press \"Enter\" after each input."); 
    for(int i=0; i<4; i++){ 
     nouns[i] = s.next(); 
    } 
    System.out.println("Please input 6 verbs, press \"Enter\" after each input."); 
    for(int i=0; i<6; i++){ 
     verbs[i] = s.next(); 
    } 
    System.out.println("Please input 7 adjectives, press \"Enter\" after each input."); 
    for(int i=0; i<7; i++){ 
     adjectives[i] = s.next(); 
    } 
    File file = null; 
    FileReader fr = null; 
    LineNumberReader lnr = null; 

    try { 
     file = new File("H:\\10GraceK\\AP Computer Science\\Classwork\\src\\madlib.txt"); 
     fr = new FileReader(file);   
     lnr = new LineNumberReader(fr); 
     String line = "";   
     while ((line = lnr.readLine()) != null) { 
      System.out.println(line);    
     } 
    } finally { 
     if (fr != null) { 
      fr.close(); 
     } 
     if (lnr != null) { 
      lnr.close(); 
     } 
    } 
} 

好吧,我修正了這個例外。現在,文件中的文本讀取動詞[0],和類似的東西,但它實際上在陣列中輸出動詞[0],而不是文字。如何將數組中的字符串追加到讀取的字符串中?

+5

您可以發佈完整的例外嗎? –

+0

掃描器類具有可通過線以及從所述命令行從文件線讀取的類。值得一提的是,這是一個較新的實現(我認爲Java 1.4),所以它可以更順暢。 – kevingreen

+0

異常已修復,我的代碼下面出現新問題。 – savage24x

回答

6

方法close是未定義File。改爲使用FileReader.close。更換

file.close(); 

fr.close(); 

事實上關閉LineNumberReader就足夠了,因爲這將關閉底層FileReader。您可以將closefinally塊。看到這個example

+0

修正了編譯錯誤,謝謝。 – savage24x

+0

我發佈了上面的異常,我仍然得到FileNotFound。但是,它至少可以編譯。我可以穿過名詞動詞和形容詞,然後拋出異常。 – savage24x

2

一如既往,我不得不建議commons-io當談到讀取文件和流。

嘗試使用例如:

IOUtils.readLines 

在你的代碼中的錯誤是@Reimeus提到缺少方法。

+0

誰願意使用緩衝讀者和等時,他們可以只使用它? – CorayThan

0

掃描儀API改進,使之更容易:

try { 
    Scanner sc = new Scanner(new File("text.txt")); 
    sc.useDelimiter(System.getProperty("line.separator")); 
    String ln = sc.next(); 

} catch (FileNotFoundException ex) { 
    Logger.getLogger(this.class.getName()).log(Level.SEVERE, null, ex); 
}