代码不输出期望值;如何修改以获得预期的结果?

时间:2019-07-10 03:40:36

标签: java math

在下面的Java代码中,期望值是78,但返回值59。我需要做哪些修改才能获得期望的结果?

public class SampleOne {    
    public static void main(String[] args) {    

        int ans=42+45-48-5-15+20*2;

        System.out.println(" Ans="+ans);    
    }
}

3 个答案:

答案 0 :(得分:1)

使用大括号进行复杂的操作。

此外,您还应该记住BODMAS规则: 分母乘除法的括号

int ans=(42+45-48-5-15+20)*2;

答案 1 :(得分:1)

您需要考虑operator precedence。在加法({{1})和减法(*)之前执行乘法运算符(+),结果为59。

似乎您打算按出现的顺序执行运算符以获得78的结果。您无法更改Java的运算符优先级,但可以强制其在乘法之前执行加/减序列。通过用括号将计算结果括起来将其乘以2:

-

答案 2 :(得分:0)

59正在接收,因为计算机遵循以下优先顺序

除法->乘法->加法->减法

结帐java docs on operator precidence

为了获得预期的结果,您需要使用括号

  

打开括号-(
  和方括号-)

将您的表达式转换为ans=(42+45-48-5-15+20)*2;

以便收到您的预期结果。