2014-03-05 40 views
0

我對Java有點新鮮感,並運行這個程序,要求我輸入文件名,讀取文件中的信息,使用它填充數組,然後詢問文件的名稱將輸出打開。 但是,當我要求輸出的文件名時,它從來沒有正確讀取它,我不知道爲什麼。 我使用掃描儀,這是我必須現在編碼:文件中的Java輸出

System.out.println("What file name?"); 
    Scanner teclat = null; 
    try { 
     teclat = new Scanner(System.in); 
    } catch (Exception e) { 
     System.err.println("Wrong name!"); 
     System.exit(-1); 
    } 
    String fitxer = teclat.toString(); 
    PrintWriter surtida = new PrintWriter(new FileWriter(fitxer)); 
    teclat.close(); 
    String fitxer = teclat.next().trim(); 

然後我做印刷:

if(this.esBuit()) 
      System.err.println("Llista de llenguatges buida!"); 
     else { 
      Node p = this.buscarNode(lleng); // Busquem el Llenguatge lleng i imprimim tots els que han estat influenciats per aquest 
      System.out.println("- - - - - - -\n"); 
      System.out.println("Llenguatges influenciats per "+lleng+":"); 
      while(p.inf != null) { 
       System.out.print(p.inf.nom+"\n"); 
        p = p.inf; 
      } 
      System.out.println("- - - - - - -"); 
     } 

但是,如果我嘗試後先打印文件名使用System.out.printnl代碼塊會打印一個奇怪的引用,就好像它沒有正確讀取文件名一樣。 我該如何使它工作?

編輯:我更新了我的代碼,並添加了一個可能相關的新問題: 我試過了,沒有任何變化。我想別的東西,在節目中,最開始的時候我真正的輸入文件名,它讀取的第一行,並做到這一點:

String s = fitxer.toString(); 
     String b1 = s.substring(0,11); 
     System.out.println(b1); 
     String b2 = s.substring(0,14); 
     System.out.println(b2); 

而這種打印:

java.util.S 
java.util.Scan 

爲什麼?

回答

3

當你開始從輸入閱讀:

String fitxer = teclat.toString(); 

應該

String fitxer = teclat.nextLine(); 

這是因爲toStringScanner對象轉換爲字符串表示。另一方面,nextLine實際上是從掃描器指向的輸入中讀取一行。

應該是這樣的:

System.out.println("What file name?"); 
Scanner teclat = null; 
try { 
    teclat = new Scanner(System.in); 
} catch (Exception e) { 
    System.err.println("Wrong name!"); 
    System.exit(-1); 
} 
String fitxer = teclat.nextLine(); 
PrintWriter surtida = new PrintWriter(new FileWriter(fitxer)); 
teclat.close(); 
+0

我不知道它是否有關,但警告出現在該行'PrintWriter的surtida =的新PrintWriter(新的FileWriter(fitxer));',究竟在'surtida'中,它告訴我要添加suppressWarning,爲什麼會出現這個問題?我試着你的建議,它顯示我在我改變了通道這個錯誤:'在線程中的異常「主」java.util.NoSuchElementException:沒有找到線「 –

+0

'NoSuchElementException'意味着沒有輸入行,也許它是一個空行? –

+0

事情是,我只能輸入要讀取的文件的名稱,然後當它使用信息時,一些異常跳轉,然後直接轉到此方法,它會打印System.out.printnl,但我不能type,它就像它讀取我沒有輸入的內容 –