我试图找到一个整数数组中的最小值,但是当我这样做时,我会在一个地方得到一个arrayindexoutofbounds,据我所知,不应该计算数组索引,只有一个比较指数和最小值。 下面有问题的部分代码:
}
System.out.println(sum);
int minste=tall[0];
for (int i : tall){
if(tall[i]<tall[0]){ //This is where the exception is made. But why?
minste=tall[i];
}
}
System.out.println(minste);
}
}
答案 0 :(得分:3)
i
已经是一个元素,只需使用它。无需tall[i]
:
if(i < minste) {
此循环表示:“对于int
中的每个tall
。
为了更好地理解增强型循环,请以这种方式思考:
for(int i = 0; i < tall.length; i++) {
System.out.println(tall[i]);
}
将打印相同的内容:
for(int i : tall) {
System.out.println(i);
}
这就是为什么建议为变量使用有意义的名称而不是i
,使用item
,因此它会像item
中的每个tall
一样}” ...
找到最小值的替代解决方案:
Arrays#sort
答案 1 :(得分:2)
当您使用for-each
循环时,为什么要使用索引?
if(tall[i]<tall[0]){
tall[i]
- 给出ArrayIndexOutOfBoundsException,因为i
是数组中的元素而不是索引值。而且值i
肯定超过了数组的长度。
你需要做的就是thi
int minste = tall[0];
for (int i : tall) {
if(i < minste) {
minste = i;
}
}
答案 2 :(得分:0)
您正在使用for-each循环,但尝试使用i
作为索引。
要正常工作,请将代码更改为
int minste = tall[0];
for (int i : tall)
{
if(i < minste)
{
minste = i;
}
}
或
int minste = tall[0];
for (int i = 0; i<tall.length; i++)
{
if(tall[i] < minste)
{
minste = tall[i];
}
}