使用具有特定对象引用的随机数创建数组
Posted
技术标签:
【中文标题】使用具有特定对象引用的随机数创建数组【英文标题】:Creating an Array with random numbers with a specific object reference 【发布时间】:2013-12-06 04:10:04 【问题描述】:对于 calc 的 100 个元素中的每一个,使用 随机生成的数字。将 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
数组
欢迎来到 SO。如果任何答案可以帮助您成功解决您的问题,please accept it
【参考方案1】:
您有一个 Clacal
类型的数组,而不是 int 类型。你有两个选择
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();
【讨论】:
【参考方案2】: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()
【讨论】:
【参考方案3】:您正在尝试将 int
值分配为 Claclal
数组的元素。
您应该向Claclal
类添加一个字段以在每个对象中存储一个双精度值。在您的main
方法中,使用您已实例化的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());
【讨论】:
【参考方案4】:您收到错误是因为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);
【讨论】:
@tawnpawt:不,它不应该是 nextDouble,它应该是 nextInt。如果您使用 nextDouble 并强制转换为 int,则大多数值将为 0,因此您的数组将填充 0。编辑答案并使用 nextInt,您可以使用 nextDouble 检查并查看大多数值将是 0。 @tawnpawt: nextDouble 给出value between 0.0 and 1.0
,当你将它转换为int
时,你得到0,只有当1.0 生成时,你得到1,这就是你在这个程序中所期望的?只有 0 和 1 ??以上是关于使用具有特定对象引用的随机数创建数组的主要内容,如果未能解决你的问题,请参考以下文章