我是Java的新手,我正在尝试编写一个小程序,要求用户输入0-4之间的整数。到目前为止我已写过这篇文章,但它似乎无法奏效!谁能告诉我哪里错了?
import java.util.Scanner;
public class GameCharSelect {
public static void main(String[] argh){
int myChar;
Scanner in = new Scanner(System.in);
{
System.out.print("choose a player: ");
myChar = in.nextInt();
}while(myChar>0 && myChar<4);
System.out.println("--------");
System.out.println("you chose "+ myChar);
}
}
现在我希望数字为1,2或3,否则它会循环,直到用户输入其中一个,但程序此刻接受任何数字。我哪里错了?
答案 0 :(得分:3)
您的循环中缺少do
个关键字。你的条件也应该颠倒过来:
public static void main(String[] argh) {
int myChar;
Scanner in = new Scanner(System.in);
do {
System.out.print("choose a player: ");
myChar = in.nextInt();
} while (myChar <= 0 || myChar >= 4);
System.out.println("--------");
System.out.println("you chose " + myChar);
}
答案 1 :(得分:1)
你的状况有误。
您正在检查char
是否大于0 AND 是否小于4,如果是,它将再次执行循环,而您所追求的是相反的。
更改语句以检查myChar是否小于1 OR 高于3
myChar < 1 || myChar > 3
您在do
的开头还缺少do-while
。
答案 2 :(得分:1)
您的代码中存在两个问题:
我的代码是这样的:
import java.util.Scanner;
public class GameCharSelect {
public static void main(String[] argh){
int myChar;
Scanner in = new Scanner(System.in);
do{
System.out.print("choose a player: ");
myChar = in.nextInt();
} while(myChar<1 || myChar>3);
System.out.println("--------");
System.out.println("you chose "+ myChar);
}
}
答案 3 :(得分:-1)
你的循环应该看起来像
while (true) {
System.out.print("Choose a player: ");
myChar = in.nextInt();
if (myChar > 0 && myChar < 4) {
break; // out of the loop
}
}
如果扫描值为1,2或3,那么您只能break;
。
@Ali,while(true)
方法非常好。实际上,看到它们比在实际代码中运行do-while()
要常见得多。收到的downvote是主观的,并且基于个人编码风格偏好,而不是对答案正确性的指示。