0

嗨,我想知道如何打印出数组的一个随机值而不是其中的两个。这是我的代码:

public static void main(String args[])
{

    String[] currentRoom;
    String[][] rooms = new String [2] [2];
    rooms [0] [0] = "Start";
    rooms [0] [1] = "Treasure Room 1";
    rooms [1] [0] = "Goblin Hive 1";
    rooms [1] [1] = "Spider Nest";

    Random rand = new Random();
    {

        currentRoom = rooms[rand.nextInt(rooms.length)];

        System.out.println(Arrays.toString(currentRoom));

    }
}

当我打印出来时,它会从我的数组中说出两个值,例如:[“Start”,“Treasure Room1”],我需要它打印出一个值,例如:[“Start”]或只是 [“Spider Nest1 "]。我想知道如何解决这个问题。

任何帮助表示赞赏:)

4

2 回答 2

6

您需要在第二维生成随机索引,如下所示:

String[] currentRoomRow = rooms[rand.nextInt(rooms.length)];
String currentRoom = currentRoomRow[rand.nextInt(currentRoom.length)];
System.out.println(currentRoom);

当所有行的大小相同时,这是可以的;如果他们不这样做,上面的代码将“偏爱”来自“较短”行的项目。解决这个缺陷需要更多的准备工作:您需要“展平”您的数组,生成一个不超过项目数量的随机数,然后从展平的数组中选择一个项目。

于 2013-04-16T21:44:30.200 回答
2

这是一个二维数组。通过仅使用一个索引,您将获得一个数组(可能具有多个值)。using rooms [0]你会回来["Start", "Treasure Room1"]的。

因此,您必须通过 2 个索引。

Dasblinkenlight 的解决方案似乎是最好的。

于 2013-04-16T21:48:51.097 回答