如何修复Java中的“无法解析为变量”错误

时间:2019-09-16 08:54:51

标签: java

我正在尝试实现一种非常简单的排序方法,该方法采用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无法解析为变量

我不知道为什么会出现这些错误以及如何解决它们。

2 个答案:

答案 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循环中执行赋值-可能是因为赋值后变量已超出范围,因此无法访问该变量。