您好无法弄清楚为什么我无法为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
答案 0 :(得分:1)
由于整数除法在Java中的工作原理,你遇到了这个问题:
startE = startE + (((50000 * (13 / 20)) - (50000 * (1 / 2))) / 200);
当您执行上述13/20
时,它会返回0
,因为小数点后面的所有值都会在int
s中被丢弃。这相当于数学中的floor
。将50000
与0
相乘后,您会获得0
。与1/2
相同。它变为0
,0
乘以0
。
您的startE
值从25000
开始。当您将0
添加到25000
时,您会获得25000
。这就是你在循环中看到25000
的原因。