如何在方法中加入 2 个变量的名称?

Eri*_*dam 4 java libgdx

编辑:我很抱歉,我需要扩展。我正在使用 LibGDx,所以我的代码实际上更复杂。

Rock1 = new TextureRegion(texture, 5, 10);
Rock2 = new TextureRegion(texture, 6, 11);
Rock3 = new TextureRegion(texture, 7, 12);

int rannum = ran.nextInt (3)+1;
Run Code Online (Sandbox Code Playgroud)

我希望出现的岩石是随机的。

我有一个名为 'rannum' 的随机整数,它设置在 1 和 3 的边界之间。所以我想弄清楚如何获得一种方法来制作它,以便我可以将“Rock”和“rannum”结合起来,以便它可以随机返回 Rock1、Rock2 或 Rock3。

我不是指连接两个字符串 - 但特别是对象名称。

我怎样才能做到这一点?是否需要使用数组?

YCF*_*F_L 5

您可以像这样使用数组或列表:

TypeRock[] rocks = new TyprRock[]{Rock1, Rock2, Rock3};
Run Code Online (Sandbox Code Playgroud)

或者 :

List<TypeRock> rocks = Arrays.asList(Rock1, Rock2, Rock3);
Run Code Online (Sandbox Code Playgroud)

...然后你可以这样使用Random

Random ran = new Random();
TypeRock selectedRock = rocks[ran.nextInt(rocks.length)];
Run Code Online (Sandbox Code Playgroud)

或者 :

TypeRock selectedRock = rocks[ran.nextInt(rocks.size())];
Run Code Online (Sandbox Code Playgroud)

或者像@davidxxx在评论中提到的那样,你可以使用 Collections.shuffle(list) 而不是Random这样:

List<TypeRock> rocks = Arrays.asList(Rock1, Rock2, Rock3);
Collections.shuffle(rocks);
Run Code Online (Sandbox Code Playgroud)

然后你可以使用第一个值,例如 rocks.get(0)

  • @davidxx:只是指出,随着 shuffle 的复杂性变为`O(#rocks)` (3认同)