如果语句没有检测到布尔值的变化

时间:2016-02-14 13:16:37

标签: java if-statement

即使我更改了布尔值" root",if语句也使用了应该找到数字的平方根而不是正常操作的事件(加法,减法等)

    String piCheck = "pi";
    String rootCheck = "square root";
    Double n1 = null;
    boolean root = false;

    Scanner reader = new Scanner(System.in);

    System.out.println("Welcome to Calculator!");
    System.out.println(" ");

    System.out.println("Enter a number, ");
    System.out.println("or enter 'pi' to insert PI,");
    System.out.println("or enter 'square root' to find the square root of a number.");
    String input = reader.nextLine();
    if (input.toLowerCase().contains(piCheck)) {
        n1 = Math.PI;
        root = false;
    } else if (input.toLowerCase().contains(rootCheck)) {
        root = true;
    } else {
        n1 = Double.parseDouble(input);
        root=false;
    }

    if (root = true) {
        System.out.println("Which number would you like to find the square root of?");
        n1 = reader.nextDouble();
        System.out.println("The square root of " + n1 + " is:");
        System.out.println(Math.sqrt(n1));
    } else if (root != true) {
        Scanner reader2 = new Scanner(System.in);
        System.out.println("Would you like to multiply, divide, add, subtract?");
        String uOperation = reader2.nextLine();

3 个答案:

答案 0 :(得分:1)

更改为

if (root)
{
      --
}
else
{
      --
}

=用于分配值

答案 1 :(得分:0)

您使用过:

if (root = true)

这是一个赋值运算符,并且总是将root的值设置为true并继续。 你想用:

if (root == true)

但它仍然过于冗长。如果语句需要布尔表达式,则root本身是布尔值。因此可以使用更简单的方式存档相同的结果:

if (root)

答案 2 :(得分:0)

使用(root==true)或(root),因为你的代码表示root = true它将root赋值为true而不是检查你的代码是否正在执行此根< - true 而不是检查(root,true)希望这些信息有帮助