使用具有特定对象引用的随机数创建数组

时间:2013-12-06 04:10:05

标签: java arrays object reference

对于calc的100个元素中的每一个,使用实例化一个Claclal对象 随机生成的数字。使用Random类和.nextDouble()方法 为了这。

我已经创建了100个元素,但我无法向数组中添加任何数字。当我尝试添加任何随机数时,我得到一个错误,说它需要一个claclal但是它找到了一个int。

public class Claclal {

private static Claclal[] calc;

public static void main(String[] args) {
    Random r = new Random();
    calc = new Claclal[100];

    for (int i = 0; i <calc.length; i++) {
        calc[i] = new Claclal();
        calc[i] = (int)(Math.random());
    }

我得到的错误是在最后一行。 我不能改变对int的引用,因为它应该是一个claclal引用。我需要更改什么才能使代码生效?

4 个答案:

答案 0 :(得分:1)

您有一个Clacal类型的数组,而不是int类型。你有2个选择

1st)在Clacal中创建一个双重属性。

示例:

public class Claclal {

private static Claclal[] calc;
private  final double number;

public Clacal(double number){
  this.number=number;
}

public static void main(String[] args) {
    Random r = new Random();
    calc = new Claclal[100];

    for (int i = 0; i <calc.length; i++) {
        calc[i] = new Claclal(r.nextDouble());
    }
}

2nd)制作一个双数组

public class Claclal {

private static double[] calc;

public static void main(String[] args) {
    Random r = new Random();
    calc = new Claclal[100];

    for (int i = 0; i <calc.length; i++) {
        calc[i] = r.nextDouble();
    }
}

答案 1 :(得分:0)

calc[i] = (int)(Math.random());

这是不允许的,因为数组类型是Claclal,并且您正在尝试插入整数。

您需要在Claclal课程中添加一个字段并添加到该字段中。

 Claclal c= new Claclal();
 c.setRandomNumber((int)(r.nextDouble()));
 calc[i] = c;

然后你的代码转了

public class Claclal {

    private static Claclal[] calc;
    private int randomNumber;

    public static void main(String[] args) {
        Random r = new Random();
        calc = new Claclal[100];
        for (int i = 0; i < calc.length; i++) {
            Claclal c = new Claclal();
            c.setRandomNumber((int) (r.nextDouble()));
            calc[i] = c;
        }
    }

    public int getRandomNumber() {
        return randomNumber;
    }

    public void setRandomNumber(int randomNumber) {
        this.randomNumber = randomNumber;
    }
}

您使用Math.random()并且想要使用r.nextDouble()

答案 2 :(得分:0)

您收到错误,因为claclal类没有任何属性。 在claclal中添加一个属性,如下所示:

import java.util.Random;

public class Claclal {

    private static Claclal[] calc;
    int value;

    public Claclal( int value) {
        this.value = value;
    }

    public static void main(String[] args) {
        Random r = new Random();
        calc = new Claclal[100];

        for (int i = 0; i < calc.length; i++) {
                calc[i] = new Claclal(r.nextInt());
                System.out.println(""+calc[i].value);
        }
    }
}

答案 3 :(得分:0)

您正尝试将int值指定为Claclal数组的元素。

您应该在Claclal类中添加一个字段,以在每个对象中存储double值。在main方法中,使用已实例化的Random对象将新的随机double值传递给数组中每个新Claclal实例的构造函数。< / p>

import java.util.Random;

public class Claclal {
    // the double field to store a value
    private double value;

    public Claclal(double value) {
        this.value = value;
    }

    // getter
    public double getValue() {
        return this.value;
    }

    // setter
    public void setValue(double value) {
        this.value = value;
    }

    public static void main(String[] args) {
        Random r = new Random();
        Claclal[] calc = new Clalcal[100];

        for (int i = 0; i < calc.length; i++) {
            // add new Claclal object with a random double value
            calc = new Claclal(r.nextDouble());
        }
    }
}