为什么我的数组在那里找不到?

Why is my array not found when it is so there?

提问人:stupidmoron 提问时间:10/6/2022 更新时间:10/6/2022 访问量:75

问:

我的 jdk 编译器一直告诉我,我的数组(称为 nums)在它存在时找不到!什么给了?请原谅我的无知;我只是在学习。无论如何,我的代码在下面列出。

import java.util.Random;
import java.util.Arrays;

public class BubbleSort {
    public static void main(String[] args) {
        Random rand = new Random();
        int[] nums = new int[10];
        for (int i = 0; i < nums.length; i++)
            nums[i] = rand.nextInt(100);
        System.out.println("Unsorted array: " + Arrays.toString(nums));
        sort();
        System.out.println("Sorted array: " + Arrays.toString(nums));
    }
    
    public static void sort() {
        int temp;
        for (int i = 0; i < nums.length - 1; i++) {
            for (int j = 0; j < nums.length - i - 1; j++) {
                if (nums[j] > nums[j+1]) {
                    temp = nums[j];
                    nums[j] = nums[j+1];
                    nums[j+1] = temp;
                }
            }
        }
    }
}
Java 数组变量

评论

0赞 Mike 'Pomax' Kamermans 10/6/2022
因为它没有。你声明它的范围为 ,但你试图在没有传递它的情况下在内部使用它。mainsort
0赞 knittl 10/6/2022
因为只存在于里面。其他方法不会自动访问局部变量。您可以将变量作为参数传递,也可以将其设置为字段,或者...nummain
0赞 stupidmoron 10/6/2022
天哪,我没有看到我在主线中声明了它!现在我知道为什么编程是在工作中分组完成的了。总是需要另一双眼睛来发现你的错误!

答:

1赞 Unmitigated 10/6/2022 #1

nums在定义它的方法之外不可见 ()。将其作为参数传递给。mainsort

更改 的签名以接受数组参数:sort

public static void sort(int[] nums)

传递到:numssortmain

sort(nums);