java - 如何创建具有随机数量值的数组

标签 java arrays random

我需要创建一个包含 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/

相关文章:

mysql - 带 Where 子句的 Order By Rand()

java - 如何在 Eclipse GWT 项目中分析服务器?

Java - 通过程序方式创建注释

c - C 中全局变量的行为

javascript - 从数组的数组中过滤前 X

ruby - 如何使用 MongoMapper 以随机顺序获取文档?

java - Android Studio 无法解析 : com. android.support :appcompat-v7. 28.0.0

java - Jackson POJO 映射 ArrayList<Class> 无法识别的字段

javascript - 移动类型化 Javascript 数组的值?

objective-c - 提高 Objective-C 中的随机性质量