while循环检查两个布尔值总是运行

时间:2015-04-19 19:08:35

标签: java while-loop

我是java的初学者,我刚刚开始学习接口,所以我试图创建一个程序,该程序具有实现接口的类。无论如何,我遇到了程序中while循环的问题。我尝试给用户提供在与一个人或一个人交谈之间做出选择的机会,据我所知&&检查两个条件(如果其中任何一个是真的,它会运行循环)。

import java.util.Scanner;
public class App {

public static void main(String[] args) {
    Scanner ai = new Scanner(System.in);
    Conversation guy = new Human();
    Conversation rox = new Robot();
    System.out.println("What do you want to talk to?");
    String choice = ai.nextLine();
    while (choice != "Robot" && choice!= "Person"){
        System.out.println("Option not available, choose again.");
        choice = ai.nextLine();
    }
    switch(choice){
    case "Person":
        System.out.println("What's my name?");
        guy.greet();
        guy.conv();
        guy.bye();
        break;
    case "Robot":
        System.out.println("What's my name?");
        rox.greet();
        rox.conv();
        rox.bye();
        break;
    }
    ai.close();

    }
}

我试图这样做,如果输入既不是"Person"也不是"Robot",它会再次扫描新输入但是尽管输入是其中一个,程序总是运行循环,为什么呢?

1 个答案:

答案 0 :(得分:0)

您正在使用String比较对象(==),比较此处的引用:

choice != "Robot" && choice!= "Person"

您需要使用.equals()方法来有意义地比较字符串