2011-09-10 350 views
5

我是JAVA新手,我不确定如何打破我在下面的代码中使用的DO WHILE循环?我想我可以输入-1打破或所有其他数字继续循环。打破DO while循环Java?

import javax.swing.*; 
public class Triangel { 

public static void main(String[] args) { 

int control = 1; 

while (control == 1){ 

    String value = JOptionPane.showInputDialog("Enter a number or -1 to stop"); 

    if(value == "-1"){ 
     control = 0; 
    } 
System.out.println(value); 
} 

} 

}

+3

这不是一个'DO ... WHILE'循环,这是一个'WHILE'循环。你可以通过在循环中的任何地方发出'break'来打破它。 – Shef

+0

Triangle:http://www.beedictionary.com/common-errors/angel_vs_angle – zengr

回答

9

您需要使用.equals()代替==,就像这样:

if (value.equals("-1")){ 
    control = 0; 
} 

当您使用==你检查引用相等(即是这个相同的指针),但是当您使用.equals()时,您正在检查值是否相等(即它们是否指向相同的东西)。通常.equals()是正确的选择。

您还可以使用break退出循环,像这样:

while(true) { 
    String value = JOptionPane.showInputDialog("Enter a number or -1 to stop"); 
    System.out.println(value); 
    if ("-1".equals(value)) { 
     break; 
    } 
} 
+1

我有点困惑,为什么它不适用于==? –

+3

==比较一个对象的引用是否相等,也就是说,它们是否指向* exact *相同的对象?如果我有一个包含整数的结构,并且我说新结构(4)==新结构(4),这将是错误的,因为虽然我已经在两个对象中将结构的整数初始化为4,但它们是不同的对象。但是,如果我正确地重载了​​equals(和hashcode,请参阅javadocs),新的Structure(4).equals(new Structure(4))将会打印为真 - 即使它们是不同的对象,它们也是一样的等于合同。 – MetroidFan2002

3

您可以使用break

while (true) { 
    ... 
    if ("-1".equals(value)) { 
     break; 
    } 
    ... 
} 
+0

不要使用'=='比较字符串,而是使用'.equals'。 – Howard

+0

对不起 - 没有注意到这是java,认为C# –

5

你需要比较字符串时使用String.equals()方法。你value == "-1"代码检查参考平等,没有平等的价值