这是我到目前为止的代码片段。我的问题是min值是Integer.MAX_VALUE,而不是我想要的值。 iSpeedMph和压力都是一维整数数组。
//calculating mins
Integer min = Integer.MAX_VALUE;
int minSpeed = Integer.MAX_VALUE;
int minPressure = Integer.MAX_VALUE;
for(i = 0; i < iSpeedMph.length; i++)
{
if (min > iSpeedMph[i])
{
min = iSpeedMph[i];
minSpeed = iSpeedMph[i];
}
}
min = Integer.MAX_VALUE;
for(i = 0; i < pressure.length; i++)
{
if (min > pressure[i])
{
min = pressure[i];
minPressure = pressure[i];
}
}
...
System.out.printf("%7s%2s%-9s%4s%8s%5s%13.3s%5s%16.2s\n", "Minimum", " ", " ", " ", " ", " ", minPressure, " ", minSpeed);
当我打印出最后一行时,终端显示214表示压力,21表示速度,没有格式化,表示它们都是Integer.MAX_VALUE。
答案 0 :(得分:2)
您正在检查当前项目是否大于当前最小值Integer.MAX_VALUE
,但您要检查当前项目是否小于当前最小值,例如
if (iSpeedMph[i] < min)
同样适用于其他最小确定。
答案 1 :(得分:2)
测试
if (iSpeedMph[i] > min)
始终返回false
。您必须撤消比较。
if (iSpeedMph[i] < min)
或作为替代
if (min > iSpeedMph[i])
答案 2 :(得分:1)
以下条件永远不会对任何整数都成立,因为min
是Integer.MAXVALUE
。
if (iSpeedMph[i] > min)
只需将其初始化为0,检查您是否正在搜索数组中的min,或者使用第一个数组值分配min并从第2个元素循环数组。
答案 3 :(得分:0)
if (iSpeedMph[i] > min)
这怎么能给你新的最小值?
另外,请使用已为您编写的min
方法,例如https://stackoverflow.com/a/1658144/499922
答案 4 :(得分:0)
正如其他人所指出的,你在if语句中的比较是错误的。但是使用Java 8流来查找数组中的min和max非常简单:
int minSpeed = Arrays.stream(iSpeedMph).min().get();
int minPressure = Arrays.stream(pressure).min().get();