BODMAS,Java。简单的数学,不会加起来

时间:2014-03-29 18:05:46

标签: java loops math addition

您好无法弄清楚为什么我无法为startE获得正确的结果

只是一个简单的程序,来说明问题。

“NUMBER CLASS”

public class Number {

    public static void main(String[] args) {
        Grow big = new Grow();
        big.growing();
    }}

“GROW CLASS”

public class Grow {
    private int startE = 50000 / 1 / 2;
    private int startC = 50000 / 1 / 3;

    public void growing() {

        for (int i = 0; i < 10; i++) {

            startE = startE + (((50000 * (13 / 20)) - (50000 * (1 / 2))) / 200);
            startC = startC + ((50000 / 1 / 2 - 50000 / 1 / 3) / 75);

            System.out.println(startE);
            System.out.println(startC);

        }
    }}

你会看到'startC'按预期运行,但我对'startE'并不满意 如果你能提供帮助就很棒

它在控制台上输出的内容。

25000
25000
25000
25000
25000 etc

1 个答案:

答案 0 :(得分:1)

由于整数除法在Java中的工作原理,你遇到了这个问题:

startE = startE + (((50000 * (13 / 20)) - (50000 * (1 / 2))) / 200);

当您执行上述13/20时,它会返回0,因为小数点后面的所有值都会在int s中被丢弃。这相当于数学中的floor。将500000相乘后,您会获得0。与1/2相同。它变为00乘以0

您的startE值从25000开始。当您将0添加到25000时,您会获得25000。这就是你在循环中看到25000的原因。