我需要创建一个具有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变量设为静态,如何在其他文件中使用它?因为我需要数组值是随机的。
答案 0 :(得分:2)
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静态变量的官方解释(官员更喜欢称它们为类变量)。