【问题标题】:Arithmetic Operations -Java算术运算-Java
【发布时间】:2018-03-08 07:19:50
【问题描述】:
 class Example {
    public static void main(String args[]){
        System.out.println(12+8/5%4*(5-4/5)+4*5);
    }
 }

为什么输出是 37?谁能解释一下?我是java初学者

【问题讨论】:

  • 同上。我们无法真正解释您的误解并帮助您理解为什么会这样,除非我们知道您的期望和原因。
  • 我的计算没有得到 37。我得到了 12+8 和 5%4。这有什么问题?
  • 运算符优先级? 2*3+5 = 5+2*3?是 5+3*2=5+2*3 吗?
  • 这些是初等数学。您甚至可能不需要了解 Java 即可知道如何计算结果
  • 我投票结束这个问题,因为这是一个关于数学的问题,而不是关于编程的问题。

标签: java math addition operations


【解决方案1】:

检查java中的precedence of the operators

12+8/5%4*(5-4/5)+4*5
12+8/5%4*(5-0)+4*5
12+8/5%4*5+4*5
12+1%4*5+4*5
12+1*5+4*5
12+5+20
37

【讨论】:

    【解决方案2】:

    你有:12+8/5%4*(5-4/5)+4*5

    在user3134614的帖子中

    12+8/5%4*(5-4/5)+4*5
    12+8/5%4*(5-0)
    12+8/5%4*5+4*5
    12+1%4*5+4*5
    12+1*5+4*5
    12+5+20
    37
    

    你有基本的操作符

    • +两个数字相加
    • -两个数字相减
    • *两个数相乘
    • /两个数相除

    还有这些,更高级一点

    • %得到两个数的余数,即相除得到余数,如果是偶数,则余数为零,如果是奇数,则为另一个数

      例如4%4 将是4 除以4 得到22 + 2 = 4,没有余数,另一方面5%4 = 1,因为2 + 2 = 4 和超过 5 个中的 1 个

    • 括号 () 分隔一个数学表达式并将其作为单个数量返回,示例

      5 - (3-2) * 2 等价于5 - (1) * 2 = 5 - 2 = 3

    然后

    12+8/5%4*(5-4/5)+4*5
    12+8/5%4*(5-0) is 12+8/5%4*(5 - (4/5) = 0.8, but converted to integer is 0, then 5 - 0 = 5)
    12+8/5%4*5+4*5 is 12+ (8/5 = 1.6, but to integer is 1) %4*5+4*5
    12+1%4*5+4*5 is 12+ (1%4 = 1 (1 is different of 4 then result is 1)) *5+4*5
    12+1*5+4*5 is 12 + (1*5 = 5) + (4*5 = 20)
    12+5+20 and 12 + 5 + 20 = 37
    37
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-06
      • 2016-06-01
      • 2012-11-27
      • 2012-12-17
      • 2014-04-30
      • 2016-03-10
      • 1970-01-01
      相关资源
      最近更新 更多