【问题标题】:Boolean Method does not return false布尔方法不返回 false
【发布时间】:2015-01-22 23:02:38
【问题描述】:

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

}

【问题讨论】:

  • 我想你可能想要== 而不是=。比较与分配。更好的是,您可以使用while (choice) 检查是否为真或while (!choice) 检查是否为假。
  • 我注意到了另外一件事,但这不是问题的原因.. 您拥有所有三个选项。equalsIgnoreCase("a") .. 只是为了引起您的注意..

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


【解决方案1】:

当你需要比较时总是使用==,这在Java中表示相等,而=表示赋值。这与某些语言(如 PL/SQL)不同。

所以当你调用while(choice =false) 时,Java 只会将 false 分配给变量选择,它不会将 choice 与 false 进行比较。

您应该改用while(choice==false)if (choice == true) 中的相同

查看operators了解更多详情

【讨论】:

    【解决方案2】:

    您正在使用要使用等于运算符的赋值。 while(!choice)while(choice==false)。在if 中相同。在您的情况下,您需要区分有效选择和实际选择。也许让函数返回比布尔值更多的值更容易。

    还有一个有用的提示:永远不要忽略编译器或 IDE 的警告。它会告诉你是否做了一些愚蠢的事情,比如在表达式中赋值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-16
      • 1970-01-01
      • 1970-01-01
      • 2017-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多