java:如果while循环中的条件不起作用,则简单

java:如果while循环中的条件不起作用,则简单,java,if-statement,while-loop,Java,If Statement,While Loop,我目前正在为班级开发一个财务规划应用程序,但我无法获得一个包含条件的循环。它只是不断循环,尽管条件-这几乎就像是条件被完全忽略 这是我的代码-请帮忙 while (true){ Scanner scanVar = new Scanner(System.in); System.out.println("\nEnter expenditure item: "); String myString = scanVar.nextLine();

我目前正在为班级开发一个财务规划应用程序,但我无法获得一个包含条件的循环。它只是不断循环,尽管条件-这几乎就像是条件被完全忽略

这是我的代码-请帮忙

while (true){
        Scanner scanVar = new Scanner(System.in);
        System.out.println("\nEnter expenditure item: ");
        String myString = scanVar.nextLine();
        Scanner scanVar2 = new Scanner(System.in);
        System.out.println("\nEnter expenditure value: ");
        double myDouble = scanVar2.nextDouble();
        expenditureMap.put(myString, myDouble);
        Scanner scanVar3 = new Scanner(System.in);
        System.out.println("\nAnother item? ");
        String myString2 = scanVar3.nextLine();
            if (myString2 == "yes") {
                continue;
            }
            else {
                break;
            }
    }
非常感谢,,
Dylan

你真的想使用
mystring2.equals(“yes”)
(或者更好的是,
“yes”。equals(mystring2)

对象上的
=
操作符测试它们是否是相同的实例,而不是相同的字符串值

String a = new String("yes");
String b = new String("yes");

a == b => false
a.equals(b) => true

如果使用==运算符,则会比较对象引用是否匹配。您应该使用equals运算符

if (myString2.equals("yes"))

按以下方式更改条件,然后重试:

if (myString2.equals("yes")) {

你应该使用相等的。。。查看此帖子

引用比较意味着检查两个对象在Memory中是否具有相同的地址
值比较意味着检查对象内部的值

错误:“string1==string2”。更正:string1.equals(string2)。谢谢…我在读了前面的答案“上面-但是谢谢你”后才意识到。