2013-04-16 2 views
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», «Сокровища Room1»] и мне нужно, чтобы распечатать только одно значение, например, : [«Старт»] или просто [«Spider Nest1»]. Мне было интересно, как я могу это решить.

Любая помощь приветствуется :)

ответ

6

Вам необходимо сгенерировать случайный индекс во втором измерении, как это:

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

Это нормально, когда все строки имеют одинаковый размер; если они этого не сделают, приведенный выше код будет «одобрять» элементы из «более коротких» строк. Устранение этого недостатка потребует дополнительной подготовки: вам нужно будет «сгладить» ваш массив, создать единичный случайный размер до количества элементов, а затем выбрать элемент из сплющенного массива.

2

Это двумерный массив. Используя только один индекс, вы получите массив (возможно, с несколькими значениями). К using rooms [0] вы вернетесь ["Start", "Treasure Room1"].

Таким образом, вы должны пройти 2 указателя.

Решение Dasblinkenlight кажется лучшим.

Смежные вопросы