我的两个变量没有正确划分存在问题。我初始化了所有这些,除了“yFactor”之外,它们都能顺利运行。 以下是导致我出现问题的代码片段:
range = maximum - minimum;
try{
heightFactor = (580.0/range);
} catch (Exception e){
heightFactor = 0.0;
}
try{
yFactor = (maximum/range);
} catch (Exception e){
yFactor = 1.0;
}
System.out.println(currentSavings);
System.out.println(savingsBeforeRetirement);
System.out.println(savingsAfterRetirement);
System.out.println(minimum);
System.out.println(maximum);
System.out.println(range);
System.out.println(heightFactor);
System.out.println(yFactor);
此代码的输出是
-318.3508771930617
10958
-318
-318
10958
11276
0.05143667967364313
0.0
请注意,除了yFactor之外,上面的每个变量对于我输入的参数都是“正确的”。
以下是此课程的完整代码(如果您需要):http://pastebin.com/UnHUEdZM
非常感谢任何人提供的任何帮助!
编辑:max,min,range,savingsbeforeretirement和savingsafterretirement是整数,heightFactor和yFactor是双打
答案 0 :(得分:1)
我的猜测是范围和最大值都是int类型,因此除法将产生0.这将转换为(double或float)yFactor,其值为0.0
答案 1 :(得分:0)
maximum
和range
都定义为int
,所以
yFactor = (maximum/range);
执行整数除法,在您的情况下,使用0
正确生成。
如果要进行浮点除法,则必须至少将一个值转换为float:
yFactor = ((float)maximum/range);
答案 2 :(得分:0)
这里的问题是你正在对整数执行除法,这将导致为0.将int
更改为float
或double
。另一种选择是,如果您在分割前将其投放到float
/ double
。
答案 3 :(得分:0)
从您的粘贴箱中,我看到您有:
int maximum;
int minimum;
int range;
您的部门将在整数算术中执行。也就是说,任何部分都将丢失。
要解决此问题,请将其中一个数字提升为浮点数:
yFactor = (double)maximum / range;
然后将以浮点进行除法。