【问题标题】:Setting constructor variables with outside method inside of the same class在同一个类中使用外部方法设置构造函数变量
【发布时间】:2017-07-16 01:34:39
【问题描述】:

我正在尝试将asteroid1-asteroid10 发送到AsteroidField() 构造函数内的沙箱。我不能简单地在generate() 中写sandbox.addBlob(asteroid1);,因为我现在不在构造函数之外。我该如何解决这个问题?

public class AsteroidField implements BlobGUI {
    private static Random random = new Random();

    public AsteroidField() {
        SandBox sandbox = new SandBox();
        sandbox.setSandBoxMode(FLOW);
        sandbox.setFrameRate(15);
        sandbox.init(this);
    }

    public void generate() {
        int z;
        int i;
        int[] x = new int[10];
        int[] y = new int[10];
        double[] r = new double[10];

        for( i = 0; i < 10; i++ ) {
            x[i] = 0;
            while( x[i] == 0 )
                x[i] = random.nextInt(7) - 3;
            y[i] = 0;
            while( y[i] == 0 )
                y[i] = random.nextInt(7) - 3;
            r[i] = 0;
            while( r[i] == 0 ) {
                z = random.nextInt();
                if( z % 2 == 0 )
                    r[i] = -0.1;
                else
                    r[i] = 0.1;   
            }
        }

        i = 0;
        Asteroid asteroid1 = new Asteroid( x[i], y[i], r[i] );

        i++;
        Asteroid asteroid2 = new Asteroid( x[i], y[i], r[i] );
        i++;
        Asteroid asteroid3 = new Asteroid( x[i], y[i], r[i] );
        i++;
        Asteroid asteroid4 = new Asteroid( x[i], y[i], r[i] );
        i++;
        Asteroid asteroid5 = new Asteroid( x[i], y[i], r[i] );
        i++;
        Asteroid asteroid6 = new Asteroid( x[i], y[i], r[i] );
        i++;
        Asteroid asteroid7 = new Asteroid( x[i], y[i], r[i] );
        i++;
        Asteroid asteroid8 = new Asteroid( x[i], y[i], r[i] );
        i++;
        Asteroid asteroid9 = new Asteroid( x[i], y[i], r[i] );
        i++;
        Asteroid asteroid10 = new Asteroid( x[i], y[i], r[i] );
    }
}

【问题讨论】:

  • generate() 是从课堂内部还是外部调用的?为什么它是一个独立于构造函数的方法?

标签: java class methods constructor


【解决方案1】:

SandBox 对象保留在类中。

SandBox sandbox;
public AsteroidField() {

    sandbox = new SandBox();
    sandbox.setSandBoxMode(FLOW);
    ...

【讨论】:

  • @hunter3035,如果对您有帮助,请考虑接受正确的答案。
猜你喜欢
  • 2012-11-10
  • 2016-04-08
  • 1970-01-01
  • 2020-11-20
  • 1970-01-01
  • 2013-09-11
  • 2019-02-22
  • 2014-12-14
  • 1970-01-01
相关资源
最近更新 更多