它编译,只是它没有初始化while (choice = false)
所以无论输入ans
,它都不会显示“无效输入,输入a,b,c:”并重申。
import java.util.Scanner;
public class Test
{
public static void main(String[] args)
{
Scanner kb = new Scanner(System.in);
String ans;
boolean choice;
System.out.print("Enter a, b, c: ");
ans = kb.nextLine();
choice = isValidChoice(ans);
while (choice = false)
{
System.out.print("Invalid input, enter a, b, c: ");
ans = kb.nextLine();
choice = isValidChoice(ans);
}
if (choice = true)
{
System.out.println("Your input was " + ans);
}
}
public static boolean isValidChoice(String choice)
{
if (choice.equalsIgnoreCase("a") || choice.equalsIgnoreCase("a")
|| choice.equalsIgnoreCase("a"))
{
return true;
}
else
{
return false;
}
}
}
答案 0 :(得分:1)
在需要比较时始终使用==
,这意味着Java中的相等性,而=
表示赋值。这与PL / SQL等语言不同。
因此,当您调用while(choice =false)
时,Java仅将false赋给变量选项,它不会将choice
与false进行比较。
您应该使用while(choice==false)
代替if (choice == true)
查看operators了解详情
答案 1 :(得分:1)
您正在使用要使用equals运算符的分配。 while(!choice)
或while(choice==false)
。 if
中相同。在您的情况下,您需要区分有效选择和实际选择。也许让函数返回的值比布尔值更容易。
一个有用的提示:永远不要忽略编译器或IDE的警告。它会告诉你是否做了一些愚蠢的事情,比如在表达式中进行分配。