gpt4 book ai didi

java - 打乱二维数组,同时将列元素保持在一起

转载 作者:行者123 更新时间:2023-12-01 11:17:27 24 4
gpt4 key购买 nike

所以我正在为一个类做这个作业,但我一生都无法弄清楚如何使用 Collections.shuffle() 方法来打乱由州及其大写字母组成的数组。现在,当我洗牌数组时,它会洗牌所有内容。我需要它来调整一切,同时也保持国家和资本之间的关系。 (即

[阿拉巴马州][蒙哥马利],[阿拉斯加][朱诺],...

不应该变成这样的

[阿拉巴马州][阿拉斯加]、[朱诺][蒙哥马利]、...

[阿拉斯加州][蒙哥马利]、[朱诺][阿拉巴马州]...

我有什么遗漏的吗?这是到目前为止的工作代码...

import java.util.ArrayList; 
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Random;
/**
* @author mstashev
*
* Rewrite Programming Exercise 8.37 to store the pairs of states and
* capitals so that the questions are displayed randomly.
*
* Exercise 8.37
*
* Write a program that repeatedly prompts the user to enter a capital
* for a state. Upon receiving the user input, the program reports
* whether the answer is correct. Assume that 50 states and their
* capitals are stored in a 2D array. The program prompts the user to
* answer all state's capitals and displays the total correct count. The
* user's answer is not case-sensitive.
*/
public class RandomStateCapitalQuestionnaire {
/**
*
*/
public static void main(String[] args) {
// create a 2D array storing all 50 states and capitals
String[][] twoDStatesAndCapitals = {
{ "Alabama", "Alaska", "Arizona", "Arkansas", "California",
"Colorado", "Connecticut", "Delaware", "Florida",
"Georgia", "Hawaii", "Idaho", "Illinois", "Indiana",
"Iowa", "Kansas", "Kentucky", "Louisiana", "Maine",
"Maryland", "Massachusetts", "Michigan", "Minnesota",
"Mississippi", "Missouri", "Montana", "Nebraska", "Nevada",
"New Hampshire", "New Jersey", "New Mexico", "New York",
"North Carolina", "North Dakota", "Ohio", "Oklahoma",
"Oregon", "Pennsylvania", "Rhode Island", "South Carolina",
"South Dakota", "Tennessee", "Texas", "Utah", "Vermont",
"Virginia", "Washington", "West Virginia", "Wisconsin",
"Wyoming" },
{ "Montgomery", "Juneau", "Phoenix", "Little Rock", "Sacramento",
"Denver", "Hartford", "Dover", "Tallahassee", "Atlanta",
"Honolulu", "Boise", "Springfield", "Indianapolis",
"Des Moines", "Topeka", "Frankfort", "Baton Rouge",
"Augusta", "Annapolis", "Boston", "Lansing", "St. Paul",
"Jackson", "Jefferson City", "Helena", "Lincoln",
"Carson City", "Concord", "Trenton", "Santa Fe", "Albany",
"Raleigh", "Bismark", "Columbus", "Oklahoma City", "Salem",
"Harrisburg", "Providence", "Columbia", "Pierre",
"Nashville", "Austin", "Salt Lake City", "Montpelier",
"Richmond", "Olympia", "Charleston", "Madison", "Cheyenne" }
};//End of 2D array
Random rnd = new Random();

System.out.println(Arrays.deepToString(twoDStatesAndCapitals));


List<List<String>> statesAndCapitals = twoDArrayToList(twoDStatesAndCapitals);
Collections.shuffle(statesAndCapitals, rnd);


System.out.println(statesAndCapitals);

/*
i = 0;
for (i = 0; i < NUMBER_OF_US_STATES; i++) {
System.out.println("Enter the Capital of the State listed: " + statesAndCapitals[i][0]);
userInput = input.next();
if (statesAndCapitals[i][1].equals(userInput)) {
correctStates++;
System.out.println("Yes that is the capital of " + statesAndCapitals[i][0] + ".");
}//end of if

else {
System.out.println("No that is not the capital of " + statesAndCapitals[i][0] + ".");
i++;
}//end of else
}//end of for loop

// counts the number of correct guesses.
System.out.println("Total number of capitals answered correctly: " + correctStates + ".");
i++;
return;

*/

}

public static <T> List<List<String>> twoDArrayToList(T[][] twoDArray){
List<T> list = new ArrayList<T>();
for (T[] array : twoDArray) {
list.addAll(Arrays.asList(array));
}
return (List<List<String>>) list;
}
}

最佳答案

这不是适合您问题的数据结构。您需要一个对的列表/数组(例如 List<Map.Entry<String, String>> ),然后调用 Collections.shuffle()在该列表中。

关于java - 打乱二维数组,同时将列元素保持在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31641638/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com