-1

我正在尝试制作一个询问用户输入的 while 循环。如果用户键入“hi”,它将打印“hello”,如果用户键入“done”,它将结束循环,但如果用户键入其他任何内容或整数,它将显示“type any hi or 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");
        }
    }      
}

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

4

3 回答 3

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");
            }
        }
    }


}

您在上面编写它的方式,您通过调用语句来丢弃while's 。linenextLine()if

于 2013-09-10T19:26:55.367 回答
1

您应该将输入保存为变量,我称之为nextLine.

Scanner input = new Scanner(System.in);
String nextLine = "";

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

    nextLine = input.nextLine();
    if((nextLine).equals("hi")){
        System.out.println("Hello");
    } else {
        System.out.println("Type hi or done");
    }
}
于 2013-09-10T19:27:30.477 回答
0

尝试以下 do...while() 循环:

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

    do{
        String inputLine = input.nextLine();

        if(inputLine.equals("hi"))
        {
            System.out.println("Hello");
        }
        else if(!inputLine.equals("done"))
        {
            System.out.println("Type hi or done");
        }
    }while(!inputLine.equals("done")); 
}
于 2013-09-10T19:29:03.043 回答