如何让 Java 扫描仪实用程序输入两次

How to get the Java Scanner utility to input twice

这是我的代码


public class Practice01{

    public static void main (String[] args){
        
        
        System.out.println("Hi there");

          Scanner scr = new Scanner(System.in);

          String response = scr.nextLine();
          
          
         if (response.equalsIgnoreCase("hello") || response.equalsIgnoreCase("hi") || response.equalsIgnoreCase("hey")) {
             System.out.println("Oh, well arent you well-mannered. Hello there, how are you?");}
             
         
             else {
                 System.out.println("Invalid Input");
                 
                 
                 String responseG;
                 responseG = scr.nextLine();
             
             if (responseG.equalsIgnoreCase("good")) {
                 System.out.println("Glad to hear");
                 
             }
         }     
        }
    }  

我对 java 有点菜鸟,我今天才开始,但是在这里的 else 语句之后,java 由于某种原因自行终止,它只是不关心其余的代码。我在网上查看时发现,如果您想使用 .nextLine(); 函数进行另一个输入(我不认为它称为函数,但您知道我的意思)但是在我输入 hey、hello 或 hi 之后,它会打印“哦,你是不是很有礼貌。你好,你好吗?”然后我无法输入任何其他内容,它显示 < terminated > 。谁能帮忙?谢谢

编辑:显然我应该将“responseG”变量和下一行移动到 if 语句中。当我这样做时,它不会激活(使用 eclipse IDE,它只是显示为白色和错误)并告诉我删除其他内容。 https://gyazo.com/1a27fa9ab8802d594cccb35ecc0cb663 发生的事情的图片。此外,如果我尝试使用 else if 语句,它还会说要删除它

您必须使用循环来保持程序运行。在你得到“哦,你好吗 well-mannered。你好,你好吗?”打印出来,它终止了没有更多任务要做的事实。

您好,欢迎来到 Whosebug!

如果您不输入“hello”或“Hello”或“hey”,您的程序将只要求从键盘输入另一个输入,你知道我的意思.如果你输入“hello”然后它会打印一行

"Oh, well aren't you well-mannered. Hello there, how are you?"

程序将终止...

这就是您的代码告诉程序要做的事情,因为您只是在 else 语句的主体中请求另一个输入。

如我所见,您不想使用 for 循环,因为您似乎只关心一条路径,上面写着你好……你好吗?……很好……很高兴听到这个消息。 .. 但如果你喜欢它,你可以使用 while() 语句或 do..while()for() 使其在变量中保存许多响应 scr.nextLine(); 函数(它 一个函数),在这种情况下你必须定义 when/how 程序将停止请求输入并将终止。


我相信这就是您想要做的,缩进正确,并且没有声明不必要的变量:

public class Practice01{
    public static void main (String[] args){

        System.out.println("Hi there");

        Scanner scr = new Scanner(System.in);
        String response = scr.nextLine();
        
        if (response.equalsIgnoreCase("hello") || response.equalsIgnoreCase("hi") || response.equalsIgnoreCase("hey")) {
            System.out.println("Oh, well arent you well-mannered. Hello there, how are you?");
        }     
        else {
                System.out.println("Invalid Input");
        }

        //You don't need ResponseG... you've already created the response variable
        response = scr.nextLine();
            
        if (response.equalsIgnoreCase("good")) {
                System.out.println("Glad to hear");
        }
        else {
                System.out.println("Invalid Input");
        }
    }
}

因此,您要做的是将 ResponseG if 语句移动到您的响应 if 语句中,因为这会阻止代码完成,因为您输入了正确的输入。另外为了以后的项目,为了更有条理,在代码的开头创建变量。

    public class Practice01{
      public static void main (String[] args){  
        System.out.println("Hi there");

        String responseG;
        Scanner scr = new Scanner(System.in);
        String response = scr.nextLine();

        if (response.equalsIgnoreCase("hello") || 
            response.equalsIgnoreCase("hi") || 
            response.equalsIgnoreCase("hey")) {
          System.out.println("Oh, well arent you well-mannered. Hello there, how are you?");
             
          responseG = scr.nextLine();
             
          if (responseG.equalsIgnoreCase("good")) {
            System.out.println("Glad to hear");
          }
        } else {
          System.out.println("Invalid Input");
        }
      }  
    }