Java函数局部变量无法解析

时间:2015-05-26 10:51:18

标签: java

我正在尝试构建一个选择排序程序,当我尝试在第二个for循环后显示arr[index]值时出现编译错误。

错误:

  

j无法解析为变量

public static int[] doSelectionSort(int[] arr) {

    for (int i = 0; i < arr.length - 1; i++) {
        int index = i;

        for (int j = i + 1; j < arr.length; j++)
            System.out.println(arr[index]);
            if (arr[j] < arr[index])
                index = j;

        int smallerNumber = arr[index];
        arr[index] = arr[i];
        arr[i] = smallerNumber;
    }
    return arr;
}

4 个答案:

答案 0 :(得分:4)

您错过了内部{中的}for-loop,因此当找到第一个;时,循环的范围就会结束 。然后:j条件中不存在if ...

public static int[] doSelectionSort(int[] arr) {

    for (int i = 0; i < arr.length - 1; i++) {
        int index = i;

        for (int j = i + 1; j < arr.length; j++) {
        //                                       ↑  here!
            System.out.println(arr[index]);
            if (arr[j] < arr[index])
                index = j;
        }
    //  ↑  here!

        int smallerNumber = arr[index];
        arr[index] = arr[i];
        arr[i] = smallerNumber;
    }
    return arr;
}

答案 1 :(得分:1)

在第二次循环后你必须使用{}

答案 2 :(得分:0)

变化:

for (int j = i + 1; j < arr.length; j++)
    System.out.println(arr[index]);
    if (arr[j] < arr[index])
       index = j;

为:

for (int j = i + 1; j < arr.length; j++){
    System.out.println(arr[index]);
    if (arr[j] < arr[index])
        index = j;
}

答案 3 :(得分:0)

当你在循环中声明变量j时,它是循环的本地变量,所以没有大括号,就不能像你想要的那样使用这个变量。