画布之间共享的随机数

时间:2014-06-06 15:19:04

标签: java canvas random

我是Java新手,我也是在线发帖的新手。所以请耐心等待。

我目前正在构建一个显示多个画布的Java程序,我需要不同的画布来使用共享和/或继承的信息。为简单起见,我们假设画布C1在圆上显示带有随机顶点的多边形。目前,这些顶点是在坐标类中创建的,然后由绘图类实例化。我现在试图以允许第二个画布C2(通过绘图类)使用它们的方式存储这些值,但是没有实例化它,因为我需要相同的随机数序列。

这是我坐标类的简化示例:

public class Coord {
    public Complex[] z = new Complex[5];

    public Coord() {}

    // create n random vertices (length of a and z will match)
    public Complex[] randCoord(Complex[] a) {
        for(int i = 0; i < a.length; i++){
            z[i] = new Complex(200 * Math.random(), 200 * Math.random());
            }
        return z;
    }

//    public static Complex[] getCoord() {
//        return z;
//        }

}

注释掉的部分是我百万次尝试生成坐标列表的静态版本之一,但我不允许返回z,因为它不是静态变量(在本例中)。在静态和非静态方法之间进行转换时,我可能遗漏了一些非常明显的东西,但是对于如何存储随机序列(以及如何调用它)的任何见解都将不胜感激。

2 个答案:

答案 0 :(得分:0)

首先,您应该阅读MVC模式:模型 - 视图 - 控制器。

其次,看起来你正在尝试做的事情可以简单地通过声明z是静态的来完成:

public static Complex[] z = new Complex[5];

答案 1 :(得分:0)

听起来Singleton模式会有所帮助:

public class Coord {

    private static final Complex[] z = fixedRandomPoints(5);

    private Coord() {}

    //this is the method you call from both canvases
    public static Complex[] getInstance() {
       return z;
    }

    private static Complex[] fixedRandomPoints(int n) {         
        final Complex[] results = new Complex[n];
        for(int i = 0; i < n.length; i++){         
            results[i] = new Complex(200 * Math.random(), 200 * Math.random());            
        }         
        return results;
    }

}

唯一不清楚的是这个班级与&#39; a&#39;变量,我认为你需要更好地解释一下。