我正在尝试实现一种非常简单的排序方法,该方法采用int数组并按升序对元素进行排序,但是我陷入了有关变量的错误
public int[] sort1(int[] a){
for (int i=0; i<a.length;i++)
for(int j=i+1; j<a.length; j++)
int min = a[i];
if (a[j] < min) {
a[i] = a[j];
a[j] = min;
min = a[i];
}
return a;
}
我无法解析为变量 j无法解析为变量 min无法解析为变量
我不知道为什么会出现这些错误以及如何解决它们。
答案 0 :(得分:7)
您缺少花括号:
public int[] sort1(int[] a){
for (int i=0; i<a.length;i++) {
for(int j=i+1; j<a.length; j++) {
int min = a[i];
if (a[j] < min) {
a[i] = a[j];
a[j] = min;
min = a[i];
}
}
}
return a;
}
内部循环有多个语句,因此必须用大括号括起来。
虽然外部循环只有一个语句,但还是建议使用大括号将其括起来。
答案 1 :(得分:4)
为补充Eran的回答,向编译器添加此块
for (int j=i+1; j<a.length; j++)
int min = a[i];
if (a[j] < min) {
a[i] = a[j];
a[j] = min;
min = a[i];
}
确实更像这样
for (int j=i+1; j<a.length; j++) int min = a[i];
if (a[j] < min) {
a[i] = a[j];
a[j] = min;
min = a[i];
}
请记住,例如,Java不是像Python这样的可感知空白的语言。
这里的第一行也是非法的。您不能在没有括号的情况下在for循环中执行赋值-可能是因为赋值后变量已超出范围,因此无法访问该变量。