【问题标题】:Why do I get an error when using Random in Java?为什么在 Java 中使用 Random 时会出错?
【发布时间】:2019-02-12 09:17:22
【问题描述】:

我正在尝试根据随机整数的值更改我拥有的图像,但是,eclipse 说 rand 整数需要一个主体。

我已经试过了

int rand = random.nextInt(4);

但这也行不通。任何帮助将不胜感激。

public class GrassTile extends Tile {
    Random random = new Random();
    static BufferedImage texture;
    int rand;

    rand = random.nextInt(4);

    if (rand == 0) {
        texture = Assets.grass0;
    } else if(rand == 1) {
        texture = Assets.grass1;
    } else if(rand == 2) {
        texture = Assets.grass2;
    } else if(rand == 3) {
        texture = Assets.grass3;
    }

    public GrassTile(int id) {
        super(texture, id);
    }
}

谢谢, Java开发

【问题讨论】:

  • 您需要将代码放入方法中。
  • 您在什么情况下尝试更改图像?
  • 你想改变点击按钮吗?或者通过点击一个按钮?还是仅在您第一次启动程序时出现?
  • 因为作为@Eran,您需要在方法甚至构造函数中包含该代码,具体取决于您要执行的操作
  • 基本语法问题 - 投票结束。

标签: java random integer


【解决方案1】:

你的代码不合逻辑 你想初始化一个纹理,它是一个带有非静态字段的静态字段

去掉纹理的static关键字,把初始化放在构造函数中

【讨论】:

  • 谢谢,这解决了我的问题,但我现在得到了一个新问题。如果我没有首先使用 super(),它会给我一个错误:“构造函数调用必须是构造函数中的第一个语句。” 抱歉,如果我听起来很笨,我仍在尝试学习。
  • 是的,你必须在任何语句之前调用 super(),这意味着你不能在初始化你的超类之前初始化你的纹理对象。也许这个类有一个纹理字段的设置器,你可以在初始化后调用它?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-04
  • 2010-10-18
  • 2021-10-02
  • 1970-01-01
  • 2021-06-26
  • 2016-03-21
  • 1970-01-01
相关资源
最近更新 更多