繁体   English   中英

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

[英]Creating an Array with random numbers with a specific 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引用。 为了使代码正常工作,我需要更改什么?

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

1)在Clacal中创建一个为double的属性。

例:

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());
    }
}

2)做一个双数组

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();
    }
}
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()

由于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);
        }
    }
}

您试图将一个int值分配为Claclal数组的元素。

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

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());
        }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM