-2

我需要一个公开的数组(类中的其他方法可以访问),但该数组需要一个输入值“T”来创建它。如何实例化需要用户输入的“全局”变量?

我的代码如下:

public class PercolationStats {
    **private double myarray[];**
    public PercolationStats(int N, int T) {
        **double myarray = new double[T];**
        for (i=0;i<T;i++) {
            Percolation percExperiment as new Percolation(N);
            //do more stuff, make calls to percExperiment.publicmethods
            myarray[i] = percExperiment.returnvalue;
        }
    }
    public static void main(String[] args) {
        int N = StdIn.readInt();
        int T = StdIn.readInt();
        PercolationStats percstats = new PercolationStats(N, T);
        //do more stuff, including finding mean and stddev of myarray[]
        StdOut.println(output);
    }

伪代码中的另一个示例:

class PercolationStats {
    Constructor(N, T) {
        new Percolation(N) //x"T" times
    }
    Main {
        new PercolationStats(N, T) //call constructor
    }
}
class Percolation {
    Constructor(N) {
        **new WQF(N)** //another class that creates an array with size dependent on N
    }
    Main {
        **make calls to WQF.publicmethods**
    }
}

在第二个示例中,在我看来,我需要在 Percolation 的构造函数中创建类 WQF 的新实例,以便接受参数 N。但是,WQF 不能被 Percolation 的 Main 方法访问。帮助!

4

2 回答 2

0

Tedd Hopp 的回答纠正了您代码中的错误。

我只想指出这myarray不是全局变量。

  1. Java没有全局变量,
  2. 它最接近的是static变量,并且
  3. myarray也不是其中之一。正如您声明的那样,它是一个实例变量。

(并且一个实例变量是实现这个的正确方法...... IMO)

于 2012-08-23T02:14:34.973 回答
0

不要在构造函数中包含类型声明。您正在创建一个屏蔽该字段的局部变量。它应该如下所示:

public class PercolationStats {
    public double myarray[];
    public PercolationStats(int n, int y) {
        myarray = new double[t];
        for (i=0; i<t; i++) {
            Percolation percExperiment = new Percolation(n);
            //do more stuff, make calls to percExperiment.publicmethods
            myarray[i] = percExperiment.returnvalue;
        }
    }
    public static void main(String[] args) {
        int n = StdIn.readInt();
        int t = StdIn.readInt();
        PercolationStats percstats = new PercolationStats(n, t);
        //do more stuff, including finding mean and stddev of myarray[]
        StdOut.println(output);
    }
}

在创建新数组时使用变量作为长度当然没有问题。

于 2012-08-23T01:18:46.720 回答