我正在尝试创建一个询问用户输入的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>
答案 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"));
}