使用用户输入时循环不中断

时间:2018-08-28 19:29:32

标签: java

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    Queue que = new Queue(50);

    System.out.println("Noki's Calculator");
    System.out.println("Choose an operation (*, /, +, -)");
    String inputOp = input.nextLine();
    System.out.println(" ");

    System.out.println("Now please enter your numbers. When finished, simply press enter.");
    boolean cont = true;
    while(true){
        System.out.print(" ::  ");
        String j = input.next();
        if(j != null) {
            int numb = Integer.parseInt(j);
            que.insert(numb);
        } else if (j==null) {
            input.close();
            break;
        }
    }

    que.view(); // PROBLEM: never executes this line

}

我的代码不会脱离while循环,而是仍然要求用户输入。当我按Enter键时,它不会再次打印“ ::”,但从不执行que.view()

3 个答案:

答案 0 :(得分:2)

使用nextLine()代替下面的next()

String j = input.nextLine();

答案 1 :(得分:1)

根据您的实现'j'永远不会为null。当您按下Enter键时,“”将分配给j。您可能需要按以下方式更改逻辑;使用input.nextLine()代替input.next()

if(!(j.isEmpty())) {
    int numb = Integer.parseInt(j);
    que.insert(numb);
} else {
    input.close();
    break;
}

答案 2 :(得分:0)

input.next()仅在按“ enter”时不返回“ null”。

更改

else if (j==null)

else if (j.equals(""))

编辑:这不能完全回答问题,但是已经回答了,所以我将其保留。