while循环不等待if语句的完成

时间:2014-03-06 17:03:03

标签: java loops if-statement while-loop

我正在开发一个针对CS的Intro的学校项目,我无法发布我的代码,因为我们的老师让我们无法从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;
                } 

步骤。

4 个答案:

答案 0 :(得分:2)

解决问题的最简单方法是致电

input.nextLine();

正好在

之下
inum = input.nextInt();

原因是:当您在控制台中键入“101”时,您确实键入了101和NEWLINE。 nextInt()从控制台缓冲区获取101,但NEWLINE字符仍然存在。出于这个原因,代码中的第二个nextLine()被跳过(代码假设您输入了一个新的空行)

答案 1 :(得分:1)

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

答案 2 :(得分:0)

定义另一个输入Scanner,不要对String和int使用相同的输入 试试这段代码(我输入System.exist(0),以便在输入yes时程序退出)

import java.util.Scanner;

public class Test {

/**
 * @param args
 */
public static void main(String[] args) {
    int inum = 0;
    Scanner input = new Scanner(System.in);
    Scanner input1 = new Scanner(System.in);
    while (inum != 102) {
        System.out.println("Enter a number between 1 and 100: ");
        inum =  input.nextInt();
        if (inum == 101) {
            System.out.println("Are you sure you want to quit?");
            String confirm = input1.nextLine();
            if (confirm.equalsIgnoreCase("yes")) {
                inum = 102;
                System.exit(0);
            }
        }

    }
}

答案 3 :(得分:0)

if( StringUtils.equals(confirm, "yes") ) { ...