我有一个程序,其中扫描程序正在响应您键入的某些内容。 以下是代码示例:
public static void main(String[] args) {
Scanner inp = new Scanner(System.in);
int i=0;
String in = inp.nextLine();
while(i==0){
if(in.equals("x")){
System.out.println("> y");
in = inp.nextLine();
}
}
一切正常,就像输入x一样,它说y。但是,如果我输入z,没有任何反应,那么如果我键入x,则没有任何反应,它会完全中断。我该怎么办?
答案 0 :(得分:3)
你有一个无限循环,所以你的程序卡在那里。因为第二次输入z不等于x所以你的代码流不会进入if并且陷入无限循环,因为你的i变量也没有改变。
答案 1 :(得分:3)
你创造了无限循环。 当输入为z时,检查等于失败并且循环在条件i == 0上保持旋转,这始终为真。
答案 2 :(得分:1)
移动此行:
in = inp.nextLine();
在它所在的花括号之外。
另外,正如其他人所说,你有一个无限循环。修复它的一种方法是使用一个标记字符(比如'q')来检查并检测它是否会发生。
答案 3 :(得分:1)
如果您希望x
在输入未接受的值后继续工作,请按以下方式调出in = inp.nextLine();
:
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner inp = new Scanner(System.in);
int i=0;
String in = inp.nextLine();
while(i==0){
if(in.equals("x")){
System.out.println("> y");
//in = inp.nextLine(); remove this
}
in = inp.nextLine();
}
}
不确定这是否是您要找的。
此外,如果您不打算更改i
,您可以通过执行此操作来简单地保持while循环。
while(true){
//do stuff here
}
答案 4 :(得分:1)
就像每个人都说的那样,你处于一个无限循环中,当你输入z
并且相等检查失败时,你再也不会再输入if
块来检查用户输入,所以输入{ x
之后再次{1}}不会打印任何内容。
假设你想保持你的程序不变并不断要求输入,你可以移动:
z
在in = inp.nextLine();
阻止之后。
您可能希望有某种终止条件,因此程序可以退出(就像您在用户键入if
或其他内容时退出循环一样)。
答案 5 :(得分:1)
当您输入malloc
时,没有任何反应,因为如果inpout不等于z
,您没有指示它执行任何操作。
由于x
处于if状态,如果您未输入in = inp.nextLine();
,它将无法从键盘读取任何内容。所以把它移到循环之外。
x