【问题标题】:Getting wrong output with Java arithmetic使用 Java 算术得到错误的输出
【发布时间】:2013-12-03 18:32:25
【问题描述】:

我想这是一个非常简单的任务,但由于我是 java 新手,我觉得这很困难。我一直得到-1,但是当我编译它时,输出是:1。谁能解释我为什么以及如何输出:1。谢谢

class Test {

    public static void main (String [] args) {

        double x = 3.14; //3.14
        int m = (int) (x-5); //3.14 - 5 = -1.83 --> (int )-1 
        int k = m + m * m -m; // -1 + (-1*-1) - 1 --> -1???
        System.out.println(k); // -1??

    }
}

【问题讨论】:

  • 你试过调试吗?检查 m 的值?
  • -1 + (-1*-1) - (-1)
  • 你对-1 + (-1*-1) - 1的解释应该是-1 + (-1*-1) - (-1)
  • puclic 也应该是public

标签: java int double


【解决方案1】:

第一行是给定的:

double x = 3.14; //3.14

第二行是截断减法的结果:

int m = (int) (x-5); //3.14 - 5 = -1.83 --> -1 

在这一点上,这只是数学。不要忘记减去一个负数和加上它的绝对值是一样的:

int k = m + m * m -m; // -1 + (-1*-1) - 1 --> -1 + 1 - (-1) --> 0 - (-1) --> 1
  1. -1 + (-1 * -1) - (-1)
  2. -1 + 1 + 1
  3. 0 + 1
  4. 1

【讨论】:

    【解决方案2】:

    -1 + (-1*-1) - (-1) = 1。你忘了减去负数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-24
      • 1970-01-01
      • 2013-10-15
      • 1970-01-01
      相关资源
      最近更新 更多