在java中使用while循环时遇到问题

use*_*399 -1 java

我正在尝试创建一个询问用户输入的while循环.如果用户键入"hi",它将打印"hello",如果用户键入"done",它将结束循环,但如果用户键入任何其他内容或整数,则会显示"键入hi或done".代码如下:

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

    while(!(input.nextLine()).equals("done")){

        if((input.nextLine()).equals("hi"))
        {
            System.out.println("Hello");
        }
        else
        {
            System.out.println("Type hi or done");
        }
    }      
}
Run Code Online (Sandbox Code Playgroud)

但是使用此代码,它会在显示结果之前询问用户输入两次.有什么问题以及如何以最有效的方式处理它?

Dan*_*lan 6

你应该只input.nextLine()为每个循环调用一次.像这样写你的代码:

package com.sandbox;

import java.util.Scanner;

public class Sandbox {

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

        String line;
        while (!(line = input.nextLine()).equals("done")) {

            if (line.equals("hi")) {
                System.out.println("Hello");
            } else {
                System.out.println("Type hi or done");
            }
        }
    }


}
Run Code Online (Sandbox Code Playgroud)

你写它上面的方式,你扔掉whileline调用nextLine()if声明.