我需要创建一个包含 8 到 12 之间随机值的数组,但它说我的变量不兼容。我必须改变什么? x 不应该是 int 吗?
这是包含问题的代码的第一部分:
public class Fish {
int min = 8;
int max = 12;
int x = min + (int)(Math.random() * ((max-min) + 1));
static Fish[] myFish = new Fish[x];
static int Fcount=0;
private float weight;
public Fish(float w) { weight = w;
myFish[Fcount] = this;
Fcount++;
}
public float getWeight( ) { return weight; } }
我的代码的第二部分是:
public class GoFish {
public static void main(String[] args) {
float[] myWeights;
for (int i = 0 ; i < x ; i++){
int min = 1;
int max = 20;
myWeights[i] = min + (int)(Math.random() * ((max-min) + 1));
}
for ( float w : myWeights ) { new Fish(w); }
for ( Fish f : Fish.myFish ) {
System.out.println( f.getWeight() );
} } }
您能否也解释一下这个问题,因为我想了解我做错了什么。我还必须将权重设置为 1 到 20 之间的随机数,但我无法让这种类型的随机数起作用。
编辑:由于我们将 x 变量设置为静态,因此如何在其他文件中使用它?因为我需要数组值是随机的。
最佳答案
x
是一个实例变量。您试图从静态上下文(javac
编译器会说“引用”)访问实例变量(javac
会说“非静态变量”) javac 会说同样的事情)。这不会编译,因为在 static Fish[] myFish = new Fish[x];
期间没有任何 Fish
实例。
您可以将代码更改为:
static int min = 8;
static int max = 12;
static int x = min + (int)(Math.random() * ((max-min) + 1));
这将使非静态变量x
静态。
Here's官方对静态变量的解释(官方更喜欢称其为类变量)。
关于java - 如何创建具有随机数量值的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21167149/