如果while循环中的语句不起作用

时间:2012-06-12 11:29:47

标签: java if-statement while-loop nested

public static void main(String[] args) {
    int i = 0;
    while(i==0){
        System.out.println("Possibilities: R, T, O and X.\nYour choice: ");
        Scanner scan = new Scanner(System.in);
        String bla = scan.nextLine();
        System.out.println(bla);
        if(bla=="R"){
            System.out.println("S or B?\n Your choice: ");
            String derp = scan.nextLine();
            if(derp=="S"){
                String rekeningNummer = spaarRekening.getRekeningNummer();
                }
        }
        if(bla=="T"){
            System.out.println("dit is T");
        }
        if(bla=="O"){

        }
        if(bla=="X"){

        }
        else{
            System.out.println("Impossible. Try again.");
        }
    i+=1;
    }

}

我试图运行这个程序,但当遇到if语句时它会忽略它。我不知道为什么,我的想法已经不多了。

5 个答案:

答案 0 :(得分:9)

要比较String个实例,请使用equals(),因为它是Object

查看

答案 1 :(得分:5)

使用.equals()。不要使用==,因为它会比较字符串引用而不是字符串字符。

 if (bla.equals("T")) {
     System.out.println("dit is T");
 }
 if (bla.equals("O")) {

 }

答案 2 :(得分:4)

==不是String比较运算符。

您应该使用.equals()来比较String s。

答案 3 :(得分:1)

我们假设我们有两个字符串。 String str1 =“blah”; String str2 = new String(“blah”);

Java中存在两个级别的相等性。

  1. 您可能想要测试两个referance变量str1和str2是否指向同一个String对象。我们通常通过str1 == str2进行检查。

  2. 您可能想要测试str1和str2引用的字符串是否相等。我们通常通过调用equals方法来执行此操作,即str1.equals(str2)或str2.equals(str1)。

  3. 更明确地说,您的陈述“bla ==”R“”会检查“”R“”和 bla 指向同一个对象与否,实际上并不是你想要的东西。 您想要检查 bla 引用的字符串是否等于“ R ”的含义。因此,如果您想在java中按照含义比较对象,则必须在该对象上调用equals()方法。

答案 4 :(得分:0)

不要使用== use .equals(),因为它是一个String对象