2015-04-01 75 views
1

我正在写一个程序,读取文本并转换引号,并且我有一个问题以条件hasNext()完成周期,程序应该以EOF结束,您能帮我吗?如何打破这个循环?

这里是我提到的循环:

boolean reference= false;  
    while(input.hasNext()) 
    { 
     String text = input.nextLine(); 

     for (int i = 0; i < text.length(); i++) 
     { 
      if(text.charAt(i)=='"' && reference==false) 
      { 
       reference=true; 
       System.out.print("``"); 
      } 
      else if(text.charAt(i)=='"' && reference == true) 
      { 
       reference=false; 
       System.out.print("''"); 
      } 
      else 
      { 
       System.out.print(text.charAt(i)); 
      } 
     } 
    } 
+0

您正在阅读的文件是? – 2015-04-01 21:07:25

+0

看来你正在使用扫描仪。 Scanner类有一个名为close()的方法 - http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html – Hozikimaru 2015-04-01 21:08:37

+0

@ Jean-FrançoisSavard不,我只是读我所键入的在控制台上。 – 2015-04-01 21:09:14

回答

2

@让FrançoisSavard不,我只是在读什么我键入控制台上。

从控制台读取时,hasNext()方法将循环直到CTRL + ž(窗口)或CTRL + d  (UNIX)被键入。

这是发送EOF (打破此循环)System.in的方式。

+0

我不知道,但我必须在网站上发布这个代码调用uva.onliine.judge,并有一台机器读取整个代码,它告诉你问题是否得到解决,机器赢得了' t键入ctrl + z或ctrl + d结束它,相反,会告诉我这个问题有一个运行时错误。 – 2015-04-01 21:18:28

0

我认为你应该尝试while (input.hasNextLine())因为你读了下一行后。

+0

在这种情况下无关紧要。 – Tom 2015-04-01 21:18:23