gpt4 book ai didi

java - 如何从此字符串中随机生成五个选择?

转载 作者:太空宇宙 更新时间:2023-11-04 07:16:50 25 4
gpt4 key购买 nike

这是代码 -

import java.util.Scanner;
public class assn9 {


public static void main(String[] args){
String[][] stateCapital = {
{ "Alabama", "Montgomery" },
{ "Alaska", "Juneau" },
{ "Arizona", "Phoenix" },
{ "Arkansas", "Little Rock" },
{ "California", "Sacramento" },
{ "Colorado", "Denver" },
{ "Connecticut", "Hartford" },
{ "Delaware", "Dover" },
{ "Florida", "Tallahassee" },
{ "Georgia", "Atlanta" },
{ "Hawaii", "Honolulu" },
{ "Idaho", "Boise" },
{ "Illinois", "Springfield" },
{ "Indiana", "Indianapolis" },
{ "Iowa", "Des Moines" },
{ "Kansas", "Topeka" },
{ "Kentucky", "Frankfort" },
{ "Louisiana", "Baton Rouge" },
{ "Maine", "Augusta" },
{ "Maryland", "Annapolis" },
{ "Massachusettes", "Boston" },
{ "Michigan", "Lansing" },
{ "Minnesota", "Saint Paul" },
{ "Mississippi", "Jackson" },
{ "Missouri", "Jefferson City" },
{ "Montana", "Helena" },
{ "Nebraska", "Lincoln" },
{ "Nevada", "Carson City" },
{ "New Hampshire", "Concord" },
{ "New Jersey", "Trenton" },
{ "New York", "Albany" },
{ "New Mexico", "Santa Fe" },
{ "North Carolina", "Raleigh" },
{ "North Dakota", "Bismark" },
{ "Ohio", "Columbus" },
{ "Oklahoma", "Oklahoma City" },
{ "Oregon", "Salem" },
{ "Pennslyvania", "Harrisburg" },
{ "Rhode Island", "Providence" },
{ "South Carolina", "Columbia" },
{ "South Dakota", "Pierre" },
{ "Tennessee", "Nashville" },
{ "Texas", "Austin" },
{ "Utah", "Salt Lake City" },
{ "Vermont", "Montpelier" },
{ "Virginia", "Richmond" },
{ "Washington", "Olympia" },
{ "West Virginia", "Charleston" },
{ "Wisconsin", "Madison" },
{ "Wyoming", "Cheyenne" } };

int correctCount = 0;

for (int i = 0; i < stateCapital.length; i++)
{
System.out.println("What is the capital of " + stateCapital[i][0] + "?");
Scanner input = new Scanner(System.in);
String capital = input.next();


if (capital.equalsIgnoreCase(stateCapital[i][1])) {
correctCount++;
System.out.println("Your answer is correct, the correct count is " + correctCount);

}
else {

System.out.println("The correct answer should be " + stateCapital[i][1] + " and the correct count is " + correctCount);
}
}

}
}

因此,我不想让控制台按照我在字符串中输入的顺序询问每个大写字母是什么,而是想随机化询问它们的顺序,并且我想将每次运行限制为五个问题。我对这个有点迷失了。谢谢。

最佳答案

你可以声明一个List来存储stateCapital的索引。并调用Collections.shuffle方法随机生成indexList。

然后你可以循环indexList来显示问题。这很简单。您只需进行以下 2 个微小更改。

  1. 添加以下代码:在循环问题之前。

    List<Integer> indexList = new ArrayList<Integer>();
    for(int idx =0; idx < stateCapital.length; idx++)
    {
    indexList.add(idx);
    }
    Collections.shuffle(indexList);
  2. 对 for 循环进行一些更改。

来自

 for (int i = 0; i < stateCapital.length; i++)

 for(int i : indexList)

如果您只需要 5 个问题,那么您可以使用以下代码

 for(int i : indexList.subList(0, 5))

然后所有问题将随机显示,无需更改其他代码。

完整代码如下:

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;

public class assn9 {

public static void main(String[] args) {
String[][] stateCapital = { { "Alabama", "Montgomery" },
{ "Alaska", "Juneau" }, { "Arizona", "Phoenix" },
{ "Arkansas", "Little Rock" }, { "California", "Sacramento" },
{ "Colorado", "Denver" }, { "Connecticut", "Hartford" },
{ "Delaware", "Dover" }, { "Florida", "Tallahassee" },
{ "Georgia", "Atlanta" }, { "Hawaii", "Honolulu" },
{ "Idaho", "Boise" }, { "Illinois", "Springfield" },
{ "Indiana", "Indianapolis" }, { "Iowa", "Des Moines" },
{ "Kansas", "Topeka" }, { "Kentucky", "Frankfort" },
{ "Louisiana", "Baton Rouge" }, { "Maine", "Augusta" },
{ "Maryland", "Annapolis" }, { "Massachusettes", "Boston" },
{ "Michigan", "Lansing" }, { "Minnesota", "Saint Paul" },
{ "Mississippi", "Jackson" }, { "Missouri", "Jefferson City" },
{ "Montana", "Helena" }, { "Nebraska", "Lincoln" },
{ "Nevada", "Carson City" }, { "New Hampshire", "Concord" },
{ "New Jersey", "Trenton" }, { "New York", "Albany" },
{ "New Mexico", "Santa Fe" }, { "North Carolina", "Raleigh" },
{ "North Dakota", "Bismark" }, { "Ohio", "Columbus" },
{ "Oklahoma", "Oklahoma City" }, { "Oregon", "Salem" },
{ "Pennslyvania", "Harrisburg" },
{ "Rhode Island", "Providence" },
{ "South Carolina", "Columbia" }, { "South Dakota", "Pierre" },
{ "Tennessee", "Nashville" }, { "Texas", "Austin" },
{ "Utah", "Salt Lake City" }, { "Vermont", "Montpelier" },
{ "Virginia", "Richmond" }, { "Washington", "Olympia" },
{ "West Virginia", "Charleston" }, { "Wisconsin", "Madison" },
{ "Wyoming", "Cheyenne" } };


List<Integer> indexList = new ArrayList<Integer>();
for(int idx =0; idx < stateCapital.length; idx++)
{
indexList.add(idx);
}
Collections.shuffle(indexList);

int correctCount = 0;

//for (int i = 0; i < indexList.size(); i++) {
for(int i : indexList){
System.out.println("What is the capital of " + stateCapital[i][0]
+ "?");
Scanner input = new Scanner(System.in);
String capital = input.next();

if (capital.equalsIgnoreCase(stateCapital[i][1])) {
correctCount++;
System.out
.println("Your answer is correct, the correct count is "
+ correctCount);

} else {

System.out.println("The correct answer should be "
+ stateCapital[i][1] + " and the correct count is "
+ correctCount);
}
}

}
}

关于java - 如何从此字符串中随机生成五个选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19850780/

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