public static void main(String[] args) {
int [] array= {4,5,7,1,5,4};
for(int j=0;j<array.length;j++) {
int min;
min=array[0];
if(array[j]>min) {
min=array[j];
}
}
System.out.print(min);
}
}
你可以帮我解释为什么min不能找到?
答案 0 :(得分:4)
您正试图从与声明声明的范围不同的范围访问min
。
您在for
- 循环中声明它:
for(int j=0; j < array.length; j++) {
int min;
min=array[0];
if(array[j]>min) {
min=array[j];
}
} // min can't be used after this.
但是,您在循环之外使用它。 int min
仅在for
循环块的范围内有效(关闭循环的}
结束可以访问min
的块。)
将min
声明移到循环之外,它应该可以正常工作。
int min = array[0];
for (int i : array) {
if (i > min) {
min = i;
}
}
System.out.println("The min is: " + min);
我使用Java's for
-each loop使您的代码在句法上更加甜蜜。
此外,您的代码中是否存在逻辑错误?您调用变量min
,但是您要将大于min
的数字指定给min。听起来你正在寻找最大值,而不是最小值?
答案 1 :(得分:2)
您需要在循环之外声明min
(因为范围):
int [] array= {4,5,7,1,5,4};
int min = array[0];// initialize min outside the loop.
for(int j=0;j<array.length;j++) {
//min=array[0]; If you leave this here, you will 'reset' min each time
if(array[j] < min) { // use "<" so that min will be the minimum
min=array[j];
}
}
System.out.print(min);
此外,你的循环中不应该有min=array[0];
;这将导致min
在每次循环迭代时“重置”回array[0]
。相反,在循环外部初始化它。最后,您的代码看起来会将min
设置为array
中的最大元素。要修复,请在if语句中反转比较。
答案 2 :(得分:1)
Min正在for循环中声明。如果您将声明移到外面,它应该可以正常工作。
例如:
public static void main(String[] args) {
int [] array= {4,5,7,1,5,4};
int min=array[0];
for(int j=0;j<array.length;j++) {
if(array[j]>min) {
min=array[j];
}
}
System.out.print(min);
}
}
答案 3 :(得分:1)
Min是for循环的本地
int [] array= {4,5,7,1,5,4};
int min = array[0];
for(int j=0;j<array.length;j++) {
if(array[j]>min) {
min=array[j];
}
}
System.out.print(min);
答案 4 :(得分:0)
min
。
删除int min;
并将以下内容放在for循环之外:
int min=0;
因为它是一个局部变量,所以必须进行初始化。
同样将min=array[0];
移到for循环之外。
答案 5 :(得分:0)
因为min变量的范围在for块内。
答案 6 :(得分:0)
不应该是if(array[j]<min) min=array[j];
吗?
答案 7 :(得分:0)
将min
移出for循环无济于事。它每次都会覆盖min
。同时将min=array[0];
移出for循环。