Что мне нужно вернуть из этого метода 2D String? - PullRequest
0 голосов
/ 11 ноября 2019

Так что же нужно вернуть этому методу, чтобы получить желаемые результаты? Массив или 2D массив?

Я пытался изменить String temp в массив, подобный String[][], но у меня больше ошибок.

// The method 
public static String[][] Shuffle (String[][] states){  
       for ( int i = 0; i < states.length; i++){
            for (int j = 0; j <states[i].length; j++){
               int i1 = (int)(Math.random() * states.length);
               int j1 = (int) (Math.random() * states[i].length);

               String temp = states[i][j];
               states[i][j] = states[i1][j1];
               states[i1][j1] = temp;

               return temp;
          }
       }
    }

Мой код в настоящее время работает без рандомизации первой строки в массиве, но я хотел бы рандомизировать состояния. Новый метод заменит эту строку states[index][1].

1 Ответ

1 голос
/ 11 ноября 2019

Я думаю, что ваш код слишком сложен, и ваш метод не имеет правильного названия.

Попробуйте это:

/**
 * @return a random [state, capital]
 */
static String[] getRandomState(String[][] states){  
     return states[(int)(Math.random() * states.length)];
}

и это:

String[] state = getRandomState(states);

System.out.println("What is the capital of " + state[0] + "?");

// get user input as user_ans

gamecounter++;
if (user_ans.equalsIgnoreCase(state[1])) {
    System.out.println("Correct!");
    correct_ans++;
} else {
    System.out.println("Incorrect! The correct answer is " + states[1]);
}
System.out.println();
...