2014-02-03 3 views
-2

У меня 10 массивов типа String[]. Из этих 10 массивов я хочу случайным образом выбрать 1 строку. До сих пор я создал следующее:Как выбрать случайный элемент из десяти массивов?

static final String[] puzzle1 = new String[] {"1" , "2" , "3" , "4" , "?" }; 
static final String[] puzzle2 = new String[] { "1" , "3" , "5" , "7" , "?"}; 
static final String[] puzzle3 = new String[] { "1" , "3" , "5" , "7" , "?"}; 
static final String[] puzzle4 = new String[] { "1" , "3" , "5" , "7" , "?"}; 
static final String[] puzzle5 = new String[] { "1" , "3" , "5" , "7" , "?"}; 


static final String[] select = new String[] { "puzzle1" , "puzzle2" , "puzzle3" , 
    "puzzle4" , "puzzle5"}; 

Random rand = new Random(); 
int selectedString = rand.nextInt(select.length); 
String selectedPuzzle = select[selectedString]; 

Это позволяет мне выбрать имя массива. Но как мне получить значения массива?

+0

добавлен такой же вопрос снова ??? –

+2

Я застрял в этом пункте sir.Пожалуйста, помогите мне –

+0

@ КришнаВамши вы пробовали мой ответ? – Nambi

ответ

0

Простой ответ

String thirdElementOfPuzzle2 = select[2]; 

, но в основном то, что ваш select указывает на неправильно

String [] select; 

switch (selectedString) { 
    case :0 
     select = puzzle1; 
     break; 
    case 1: 
     select = puzzle2; 

    //etc 

В настоящее время

String selectedPuzzle = select[selectedString]; 

Все вы получаете это name из головоломка. Если вы не используете отражение, вы не можете получить доступ к массиву с использованием имени динамически, поэтому вам нужно выполнить тест равенства, например. если я выберу номер 0, то дайте мне первую загадку, если я выберу 1, дайте мне вторую загадку и т. д. Затем вы можете назначить выбранную головоломку на общий массив, который затем можно будет ссылаться позже в вашем коде.

+0

извините, сэр, я не могу понять. Я думаю, что вы получили мой ответ, поэтому, пожалуйста, объясните подробнее sir –

+0

Я обновил мой answerr –

+0

Нет необходимости использовать инструкцию 'switch' для этой проблемы. Просто используйте 'String [] []'. –

0

Изменения Выберите массив двухмерной String[][]

поставил весь массив внутри select[][]

получить значение случайным образом из произвольно выбранного массива

public static void main(String args[]){ 

     final String[] puzzle1 = new String[] {"1" , "2" , "3" , "4" , "?" }; 
     final String[] puzzle2 = new String[] { "1" , "3" , "5" , "7" , "?"}; 
     final String[] puzzle3 = new String[] { "1" , "3" , "5" , "7" , "?"}; 
     final String[] puzzle4 = new String[] { "1" , "3" , "5" , "7" , "?"}; 
     final String[] puzzle5 = new String[] { "1" , "3" , "5" , "7" , "?"}; 


     final String[][] select = new String[][] { puzzle1 , puzzle2 , puzzle3 , puzzle4 , puzzle5}; 

        Random rand = new Random(); 
      int selectedString = rand.nextInt(select.length); 
      String selectedPuzzle = select[selectedString][selectedString]; 
      System.out.print(selectedPuzzle); 

    } 

Demo

+0

Обратите внимание, что это решение будет работать только тогда, когда количество головоломок точно соответствует количество строк в головоломке. Лучшим вариантом является выбор двух случайных чисел, один на основе 'select.length' и один на основе' selectedPuzzle.length'. –

2

Из этих 10 массивов я хочу выбрать 1 строку случайным образом.

Вам просто нужно выбрать случайный массив, а затем случайный элемент из этого массива. Хитрость заключается в том, чтобы хранить массив или массивы, а не массив имен массивов.

static final String[] puzzle1 = { "1", "2", "3", "4", "?" }; 
static final String[] puzzle2 = { "1", "3", "5", "7", "?" }; 
static final String[] puzzle3 = { "1", "3", "5", "7", "?" }; 
static final String[] puzzle4 = { "1", "3", "5", "7", "?" }; 
static final String[] puzzle5 = { "1", "3", "5", "7", "?" }; 

static final String[][] allPuzzles = { puzzle1, puzzle2, puzzle3, puzzle4, 
    puzzle5 }; 


public static String chooseRandomString() { 
    Random rand = new Random();  
    String[] selectedPuzzle = allPuzzles[rand.nextInt(allPuzzles.length)]; 
    return selectedPuzzle[rand.nextInt(selectedPuzzle.length)]; 
} 
+0

спасибо, sir.i получил –

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