Java While循环不等待if语句';完成

Java While循环不等待if语句';完成,java,loops,if-statement,while-loop,Java,Loops,If Statement,While Loop,我正在为CS简介做一个学校项目,我不能发布我的代码,因为我们的老师让我们从StackOverflow检查代码,结果我们失败了。我的问题是,在我的代码中,格式如下: while (condition){ Do something; if (new condition){ Do something else; Wait for input; Depending on input make while's condition false; } 当对if语句求值并执行其他操作时,此代码应等待输入。然

我正在为CS简介做一个学校项目,我不能发布我的代码,因为我们的老师让我们从StackOverflow检查代码,结果我们失败了。我的问题是,在我的代码中,格式如下:

while (condition){
Do something;

if (new condition){
Do something else;
Wait for input;
Depending on input make while's condition false;
}
当对if语句求值并执行其他操作时,此代码应等待输入。然而,我的代码并不等待“等待输入”步骤,而是直接进入“做点什么”步骤。这里有一些代码。谢谢你的帮助

while (inum != 102) {
System.out.println("Enter a number between 1 and 100: ");
inum = input.nextInt();
else if (inum == 101) {
                System.out.println("Are you sure you want to quit?");
                confirm = input.nextLine();
                if (confirm == "yes") {
                    inum = 102;
                }
}
在这里,当我键入101时,代码给出了以下信息: 你确定要退出吗? 输入一个介于1和100之间的数字:

*代码不等待

confirm = input.nextLine();
                if (confirm == "yes") {
                    inum = 102;
                } 

步骤

定义另一个输入扫描器,不要对字符串和int使用相同的扫描器 请尝试此代码(我将System.exist(0)放入,以便在输入yes时程序退出)


定义其他输入扫描程序,不要对字符串和int使用相同的扫描程序 请尝试此代码(我将System.exist(0)放入,以便在输入yes时程序退出)


定义其他输入扫描程序,不要对字符串和int使用相同的扫描程序 请尝试此代码(我将System.exist(0)放入,以便在输入yes时程序退出)


定义其他输入扫描程序,不要对字符串和int使用相同的扫描程序 请尝试此代码(我将System.exist(0)放入,以便在输入yes时程序退出)

  • 您应该使用confirm.equals(“yes”)
  • 输入已用于输入数字,并声明另一个扫描仪对象以输入确认字符串
  • 您应该使用confirm.equals(“yes”)
  • 输入已用于输入数字,并声明另一个扫描仪对象以输入确认字符串
  • 您应该使用confirm.equals(“yes”)
  • 输入已用于输入数字,并声明另一个扫描仪对象以输入确认字符串
  • 您应该使用confirm.equals(“yes”)
  • 输入已用于输入数字,并声明另一个扫描仪对象以输入确认字符串

  • 解决问题的最简单方法是打电话

    input.nextLine();
    
    就在下面

    inum = input.nextInt();
    

    原因是:当您在控制台中键入“101”时,实际上是键入101和换行符。nextInt()从控制台缓冲区获取101,但换行符保留。因此,跳过了代码中的第二个nextLine()(代码假定您输入了一个新的空行)

    解决问题的最简单方法是调用

    input.nextLine();
    
    就在下面

    inum = input.nextInt();
    

    原因是:当您在控制台中键入“101”时,实际上是键入101和换行符。nextInt()从控制台缓冲区获取101,但换行符保留。因此,跳过了代码中的第二个nextLine()(代码假定您输入了一个新的空行)

    解决问题的最简单方法是调用

    input.nextLine();
    
    就在下面

    inum = input.nextInt();
    

    原因是:当您在控制台中键入“101”时,实际上是键入101和换行符。nextInt()从控制台缓冲区获取101,但换行符保留。因此,跳过了代码中的第二个nextLine()(代码假定您输入了一个新的空行)

    解决问题的最简单方法是调用

    input.nextLine();
    
    就在下面

    inum = input.nextInt();
    


    原因是:当您在控制台中键入“101”时,实际上是键入101和换行符。nextInt()从控制台缓冲区获取101,但换行符保留。因此,代码中的第二条nextLine()被跳过(代码假定您输入了一个新的空行)

    @SotiriosDelimanolis,如果没有代码中显示的任何以前的
    if
    ,那么似乎。。。将
    if(confirm==“yes”)
    替换为
    if(“yes”。equals(confirm))
    在更改为(“yes”。equals(confirm))后,我仍然得到相同的响应。你的大括号和else-if的位置很有趣。你能检查一下你的示例编译并根据需要进行更新吗?@SotiriosDelimanolis,如果没有代码中显示的任何以前的
    if
    ,那么似乎。。。将
    if(confirm==“yes”)
    替换为
    if(“yes”。equals(confirm))
    在更改为(“yes”。equals(confirm))后,我仍然得到相同的响应。你的大括号和else-if的位置很有趣。你能检查一下你的示例编译并根据需要进行更新吗?@SotiriosDelimanolis,如果没有代码中显示的任何以前的
    if
    ,那么似乎。。。将
    if(confirm==“yes”)
    替换为
    if(“yes”。equals(confirm))
    在更改为(“yes”。equals(confirm))后,我仍然得到相同的响应。你的大括号和else-if的位置很有趣。你能检查一下你的示例编译并根据需要进行更新吗?@SotiriosDelimanolis,如果没有代码中显示的任何以前的
    if
    ,那么似乎。。。将
    if(confirm==“yes”)
    替换为
    if(“yes”。equals(confirm))
    在更改为(“yes”。equals(confirm))后,我仍然得到相同的响应。你的大括号和else-if的位置很有趣。你能检查你的示例编译并根据需要进行更新吗?
    confirm==“yes”
    不起作用。为什么-1我只是忘了放confirm.equalsIgnoreCase(“yes”)来提醒你你的答案没有帮助。似乎它起作用了。是否需要系统。退出(0)?代码现在不会退出while循环吗?如果你不关心特殊的inum==102案例,你可以简单地做
    while(true)
    。它是有效的,但是当我像我说的那样输入代码时,我忘记了更改==使用equals
    confirm==“yes”
    不会起作用。为什么-1我只是忘记输入confirm.equalsIgnoreCase(“yes”)来提醒你你的答案没有帮助。似乎它起作用了。是否需要系统。退出(0)?代码现在不会退出while循环吗?如果您不关心特殊的inum==102情况,您可以简单地执行
    while(true)
    。它可以工作,但是当我像我说的那样放置代码时,我忘记了更改==使用equals
    确认==