2010-11-26 188 views
0

這是我的代碼,我有一個do-while循環,除非輸入字符串「stop」,否則它應該繼續運行。但是,當我編譯代碼時,它並沒有停下來,並陷入了無限循環。 Pease幫助。謝謝。java輸入字符串,當輸入'stop'時停止

import java.io.*; 

public class input 
{ 
    public static void main(String[] argv) throws IOException 
    { 
     BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
     String text = ""; 
     do 
     { 
      System.out.println("Please enter a string: "); 
      text = br.readLine(); 
      System.out.println(text); 
     } 
     while (text != "stop"); 
    } 
} 

回答

2

嘗試通過!text.equals("stop")

!=替換text != "stop"是基準相等測試,.equals()是邏輯相等測試。兩個字符串可以是不同的對象,仍然是邏輯等於(在這種情況下是相同的內容)。

+0

更具體地說, `!=`運算符在引用類型的情況下比較引用,而對於原語則比較值(即,執行邏輯比較) – 2010-11-26 10:23:55

0

您正在比較字符串與!=。這在Java中不起作用。您應該使用equals()比較字符串:

while (!text.equals("stop")); 

注意==!=上的對象比較引用 - 也就是說,如果你使用這些運營商對非原始變量,你正在檢查,如果變量引用相同的對象,而不是如果這些對象的內容是相同的。

0

更換

while (text != "stop") 

while (!text.equals("stop")) 
0

使用==你不能比較的字符串。使用equalswhile(!"stop".equals(text))

此外,由於它來自用戶輸入,您可能想要比較忽略該情況,您可以使用equalsIgnoreCase

0

所有的海報都是正確的:你應該使用String.equals()。

你也應該完整理解Java中的字符串處理。你會在任何地方都需要它。

即使應該使用String.equals Java提供了一些「魔術」,即使在您的比較中也是如此。保持學習 !

public static void main(String[] args) throws IOException { 
     BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
     String text = ""; 
     "stop".intern(); 
     do { 
      System.out.println("Please enter a string: "); 
      text = br.readLine().intern(); 
      System.out.println(text); 
     } while (text != "stop"); 
    } 
+0

`「stop」.intern()`不是必需的。 – 2010-11-26 10:25:41