1

我试图让基数排序与队列数组一起使用,以避免冗长的 switch 语句,但我在正确初始化数组时遇到了一些麻烦。下面给出了构造函数和一个实现的例子。

当我尝试编译时,我只是得到一个找不到符号错误。

 public static radixj(){
    IntQueue[] buckets = new IntQueue[10];
    for (int i = 0; i < 10; i++)
    buckets[i] = new IntQueue();
   }

 public static void place(int temp, int marker)
 {
  int pos = temp % marker; 
  buckets[pos].put(temp);
 }

我很确定这是我正在犯的一个非常简单的错误,但我找不到它。任何帮助将不胜感激。

4

2 回答 2

3

在您的代码中

IntQueue[] buckets = new IntQueue[10];

是函数的局部变量

public static radixj()

必须有一个返回类型

public static void radixj()

所以你不能在另一个函数中使用它

buckets[pos].put(temp);

您应该声明一个静态类变量

class Foo {
    static IntQueue[] buckets = new IntQueue[10];
    ...

并使用以下方式访问它:Foo.buckets

class Foo {
    public static IntQueue[] buckets = new IntQueue[10];
    public static void radixj() {
        for (int i = 0; i < 10; i++) {
            Foo.buckets[i] = new IntQueue();
        }
    }

    public static void place(int temp, int marker) {
        int pos = temp % marker;
        Foo.buckets[pos].put(temp);
    }
}
于 2013-02-13T14:44:10.547 回答
1

radixj()缺少返回类型,buckets无法解析为变量

于 2013-02-13T14:45:43.383 回答