Java:if/else语句在无限循环中不起作用

Java:if/else语句在无限循环中不起作用,java,java.util.scanner,Java,Java.util.scanner,我正试图弄明白为什么我的函数不能正常工作。这段代码相当基本,不言自明。以下是函数: public static void Greet(){ System.out.println("Hello, what is your name? "); name = scan.nextLine(); do{ System.out.println("Would you like to order some coffee, " + name + "? (y/n) ");

我正试图弄明白为什么我的函数不能正常工作。这段代码相当基本,不言自明。以下是函数:

public static void Greet(){
    System.out.println("Hello, what is your name? ");
    name = scan.nextLine();
    do{
        System.out.println("Would you like to order some coffee, " + name + "? (y/n) ");
        input = scan.nextLine();
        if(input == "y"){
            System.out.println("Great! Let's get started.");
            break;
        }
        else if(input == "n"){
            System.out.println("Come back next time, " + name + ".");
            System.exit(0);
        }
        else{
            System.out.println("Invalid response. Try again.");
        }
    }
    while(true);
}

基本上,无论我在第5行输入什么“input”,函数都会将其视为我没有输入“y”或“n”,它只是不断循环while(true)并打印“Invalid response.Try reat”。我不知道为什么if/else语句不能正常工作。任何帮助都将不胜感激,谢谢

通过
等于比较字符串,而不是通过
=

if((input.trim()).equals("y")){
equals
比较值

==
比较
等于
时,比较参考

if(input.equals("y")){
            System.out.println("Great! Let's get started.");
            break;
        }
        else if(input.equals("n")){
            System.out.println("Come back next time, " + name + ".");
            System.exit(0);
        }

break
将使您脱离循环将
input==“y”
更改为
“y”。等于(input)
我在第9行有一个中断,但这不是问题所在。问题是,不管我输入什么,它总是循环到最后的“else”语句。我将
input==“y”
input==“n”
替换为
“y”。equalsIgnoreCase(input)
“n”。equalsIgnoreCase(input)
,它对me@MadProgrammer我的坏消息-请忽略