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

时间:2013-09-10 19:22:22

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

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

3 个答案:

答案 0 :(得分: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声明中调用line来丢弃nextLine()的{​​{1}}。

答案 1 :(得分: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");
    }
}

答案 2 :(得分: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")); 
}