在eclipse中,当我运行此代码时,minTemp结果总是0.00,尽管maxTemp和平均结果都很好。似乎没有解决它。有什么建议?
package exercises;
public class PracticalAnswer2 {
public static void main(String[] args) {
double[] temps;
temps = new double[7];
double total = 0.0;
double maxTemp = 0.0;
double minTemp = 0.0;
temps[0]= 3.4;
temps[1]= 4.2;
temps[2]= 9.0;
temps[3]= 2.2;
temps[4]= 4.5;
temps[5]= 6.4;
temps[6]= 3.1;
for(int loop = 0; loop<temps.length;loop++) {
total+=temps[loop];
if(temps[loop]<minTemp) {
minTemp = temps[loop];
}
if(temps[loop]>maxTemp) {
maxTemp = temps[loop];
}
}
System.out.printf(" average temperature : %.2f \n",(total/temps.length) );
System.out.printf("minimum temerature : %.2f \n", minTemp);
System.out.printf("maximum temperature: %.2f \n", maxTemp);
}
}
答案 0 :(得分:0)
是的,因为temps [loop]永远不会低于0.尝试为mintemp设置一些高点。类似于Double.MAX_VALUE
。
答案 1 :(得分:0)
if(temps[loop] < minTemp) { // minTemp initialized with 0.0
minTemp = temps[loop];
}
temps[0]= 3.4;
temps[1]= 4.2;
temps[2]= 9.0;
temps[3]= 2.2;
temps[4]= 4.5;
temps[5]= 6.4;
temps[6]= 3.1;
数组临时值中没有值小于0.0,您的代码执行它打算执行的操作。 通常,当我们使用minXXX或maxXXX时,我们使用非常大的数字初始化minXXX,使用较小的数字初始化maxXXX。迭代迭代时,它会比较这些值并分配所需的最小/最大值
答案 2 :(得分:0)
您使用0.0初始化minTemp
和maxTemp
。使用您编写的循环,您将永远无法更改这些值,因为temps[]
中的任何值都小于0.0。我认为在第一个循环中,您应该将temps[0]
分配给minTemp
和maxTemp
,然后在下一个循环中检查来自temps[]
的下一个值是否低于{{ 1}}并高于minTemp
。如果发生这种情况,则应将此新值分配给maxTemp
或minTemp
。顺便说一下maxTemp
在您的项目中看起来没问题。
使maxTemp
值循环按预期工作的另一种可能性是使用minTemp
而不是0.0来初始化它。