您好我想知道如何打印出一个数组的随机值而不是其中两个。这是我的代码:
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”]。我想知道如何解决这个问题。
感谢任何帮助:)
答案 0 :(得分:6)
您需要在第二维中生成随机索引,如下所示:
String[] currentRoomRow = rooms[rand.nextInt(rooms.length)];
String currentRoom = currentRoomRow[rand.nextInt(currentRoom.length)];
System.out.println(currentRoom);
当所有行具有相同的大小时,这是可以的;如果他们不这样做,上面的代码将“赞成”来自“更短”行的项目。修复这个缺陷需要更多的准备工作:你需要“压平”你的数组,生成一个随机的项目数量,然后从扁平化的数组中选择一个项目。
答案 1 :(得分:2)
这是一个二维数组。通过仅使用一个索引,您将获得一个数组(可能具有多个值)。到using rooms [0]
,您将返回["Start", "Treasure Room1"]
。
因此你必须传递2个索引。
Dasblinkenlight的解决方案似乎是最好的。