Boolean方法不返回false

时间:2014-11-25 03:25:13

标签: java if-statement while-loop boolean return

它编译,只是它没有初始化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;
            }
    }

}

2 个答案:

答案 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的警告。它会告诉你是否做了一些愚蠢的事情,比如在表达式中进行分配。