2012-08-16 48 views
0

我已經編寫了這段代碼來找出輸出,並且我正在使用運行時在servlet中運行這個代碼。這表明java.util.NoSuchElementEception即使我已經檢查了輸入文件中有一些數據:java.util.NoSuchElementException即使輸入文件有數據

public class Sec1q10 { 

static int fact(int n) { 
    int p = 1; 
    if (n != 1) { 
     p = n * fact(n - 1); 
    } 
    return p; 
} 

public static void main(String args[]) { 
    try { 
     System.out.println("first"); 
     Scanner in = new Scanner(new FileReader("F:/sem5/algorithm/in.txt")); 
     String no = in.next(); 
     int n = Integer.parseInt(no); 
     System.out.println(n); 
     int s = 0; 
     while (n != 0) { 
      s += fact(n); 
      n--; 
     } 
     System.out.println("sum=" + s); 
     String s1 = "" + s + "here"; 

     PrintWriter out; 
     System.out.println(s1); 
     out = new PrintWriter("F:/sem5/algorithm/out.txt"); 

     out.write(s1); 
     System.out.println(s1); 

    } catch (Exception ex) { 
     System.out.println("Exception: " + ex); 
    } 

} 
} 

我甚至在CMD在那裏顯示沒有任何異常的輸出,但在文件F不寫任何東西運行以下命令: /sem5/algorithm/out.txt

回答

0

看近PrintWriter

PrintWriter out; 
    System.out.println(s1); 
    out = new PrintWriter("F:/sem5/algorithm/out.txt"); 
    try 
    { 
     out.write(s1); 
     System.out.println(s1); 
    } 
    finally 
    { 
     out.close(); 
    } 
0

無論何時使用Scanner類,您都應該進行實際測試,以確保在嘗試使用hasNextXXXXX()方法讀取輸入之前輸入正在等待。

試試這個:

String no; 

while(in.hasNext()) 
{ 
    no = in.next(); 

    //..... 
} 

的問題不在於你的輸入文件沒有任何數據,那就是你的輸入文件運行的數據,因爲你不斷地閱讀。如果你嘗試閱讀什麼時候什麼都沒有,你會得到一個NoSuchElementException

+0

寫我甚至嘗試that..in這種情況下,也同樣的事情發生後,輸出文件的結果.. while使用運行時..如果循環沒有執行,但在cmd執行.. – user182022 2012-08-16 18:15:56

+0

,如果你指出我只讀數據一次..文件有數據.. – user182022 2012-08-16 18:18:50

+0

@ user182022那麼,如果你只是閱讀首先,把上面的'while'改爲'if'。 – 2012-08-16 18:20:16

0

我能想到的是該目錄不存在。你確定它確實嗎?如果沒有,你應該手動讓它,或使用.mkdir()功能

相關問題