2014-03-05 39 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,它就像它读取我没有输入的内容 –