2015-04-01 78 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