我不知道如何为这个问题提供标题,但基本上这是我的二十一点程序的一部分。此外,由于我不知道如何标题,我不知道如何查找,这就是我在这里问的原因。所以我说当用户为ace值输入1或11时,如果他们输入1或11以外的东西,它会再次要求用户输入1或11.在我的程序中一切正常,除非用户输入1,然后它再次询问问题。如果输入不等于1或11,程序应该再次询问。这是我的代码,因为我确保它总是给出一个用于测试目的的ace:
String card1="A";
int total=0;
Scanner input_var=new Scanner(System.in);
if (card1=="A"){
System.out.println("Do you want a 1 or 11 for the Ace?: ");
int player_ace_selection=input_var.nextInt();
if ((1|11)!=(player_ace_selection)){
System.out.println("Please enter a 1 or 11: ");
int new_selection=input_var.nextInt();
total=total + new_selection;
}
else {
total=total + player_ace_selection;
}
}
System.out.println(total);
提前致谢。
答案 0 :(得分:3)
表达式(1|11)
使用二进制OR
,它生成11
:
11 = 01001
1 = 00001
(11|1) = 01001
因此,比较与11!=player_ace_selection
您应该将代码更改为使用逻辑OR
,即
if (1!=player_ace_selection && 11!=player_ace_selection) {
...
}
此外,您需要修复card1 == "A"
card1.equals("A")
比较
答案 1 :(得分:1)
尝试while循环,而不是If语句。 while循环可确保程序等待用户选择正确的答案。你的逻辑操作也犯了错误。在此上下文中使用“OR”的正确方法是使用“||”分别将用户输入与“1”和“11”进行比较。
String card1="A";
int total=0;
Scanner input_var=new Scanner(System.in);
if (card1.equals("A")){
System.out.println("Do you want a 1 or 11 for the Ace?: ");
int player_ace_selection=input_var.nextInt();
while(player_ace_selection != 1 && player_ace_selection != 11){
System.out.println("Do you want a 1 or 11 for the Ace?: ");
player_ace_selection = input_var.nextInt();
}
total += player_ace_selection;
}
System.out.println(total);
答案 2 :(得分:0)
您的代码中存在一些问题,请考虑此示例并与您的代码进行比较。
String card1="A";
int total=0;
Scanner input_var=new Scanner(System.in);
if (card1.equals("A")){ // compare the content not the reference (==)
System.out.println("Do you want a 1 or 11 for the Ace?: ");
try{ // wrap with try-catch block
int player_ace_selection = Integer.parseInt(input_var.nextLine()); //read the entire line and parse the input
if ((player_ace_selection!=1)&&(player_ace_selection!=11)){
System.out.println("Please enter a 1 or 11: ");
try{
int new_selection = Integer.parseInt(input_var.nextLine()); //again read the entire line and parse the input
total=total + new_selection;
}catch(NumberFormatException e){
// do something to catch the error
}
}
else {
total=total + player_ace_selection;
}
}catch(NumberFormatException e){
// do something to catch the error
}
System.out.println(total);
}