我正在开发一个针对CS的Intro的学校项目,我无法发布我的代码,因为我们的老师让我们无法从StackOverflow获取代码。我的问题是我的代码格式为:
while (condition){
Do something;
if (new condition){
Do something else;
Wait for input;
Depending on input make while's condition false;
}
当if语句被评估时,此代码应该等待输入,并且它会执行其他操作。但是,我的代码不等待“等待输入”步骤并直接进入“执行某事”步骤。这是一些代码。谢谢你的帮助。
while (inum != 102) {
System.out.println("Enter a number between 1 and 100: ");
inum = input.nextInt();
else if (inum == 101) {
System.out.println("Are you sure you want to quit?");
confirm = input.nextLine();
if (confirm == "yes") {
inum = 102;
}
}
这里的代码在我输入101时给了我这个: 你确定你要退出吗? 输入1到100之间的数字:
*代码不等待
confirm = input.nextLine();
if (confirm == "yes") {
inum = 102;
}
步骤。
答案 0 :(得分:2)
解决问题的最简单方法是致电
input.nextLine();
正好在
之下inum = input.nextInt();
原因是:当您在控制台中键入“101”时,您确实键入了101和NEWLINE。 nextInt()从控制台缓冲区获取101,但NEWLINE字符仍然存在。出于这个原因,代码中的第二个nextLine()被跳过(代码假设您输入了一个新的空行)
答案 1 :(得分:1)
答案 2 :(得分:0)
定义另一个输入Scanner,不要对String和int使用相同的输入 试试这段代码(我输入System.exist(0),以便在输入yes时程序退出)
import java.util.Scanner;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
int inum = 0;
Scanner input = new Scanner(System.in);
Scanner input1 = new Scanner(System.in);
while (inum != 102) {
System.out.println("Enter a number between 1 and 100: ");
inum = input.nextInt();
if (inum == 101) {
System.out.println("Are you sure you want to quit?");
String confirm = input1.nextLine();
if (confirm.equalsIgnoreCase("yes")) {
inum = 102;
System.exit(0);
}
}
}
}
答案 3 :(得分:0)
if( StringUtils.equals(confirm, "yes") ) { ...