我想将(.equals
)字符串与用户输入进行比较,例如测验。现在我有多个问题:
1 如何才能随机访问我的字符串数组answerlist
?(每次都像不同的(顺序)问题一样)我使用.random
进行了如下尝试:>
public String[] questionList = {"question1", "question2", "question3"};
// answer1 is the correct answer to question1 etc.
public String[] answerList = {"answer1", "answer2", "answer3};
random = new Random();
answer = answerList[random.nextInt(answerList.length)];
2 我以为我看到您可以使用(数组)列表而不是我现在使用的String数组。如果这是真的,请您详细说明如何执行此操作。以及如何随机访问。
3 ,我该如何将随机访问的答案与为用户显示的问题相匹配?我读过一些关于为此使用类的东西吗?
谢谢!
编辑:我只是想为每个问题和答案创建一个数组,然后以一种或其他方式访问它们?
答案 0 :(得分:0)
您可以通过两种方法来实例化问题和答案列表。
1。使用班级提出问题及其相关答案
您可以考虑一个对象列表,每个对象都包含问题及其相关的答案。
class QuestionAnswerPair
{
final String question;
final String answer;
public QuestionAnswerPair(@NonNull String question, @NonNull String answer)
{
this.question = question;
this.answer = answer;
}
}
然后将您的问题/答案添加到列表中,您将执行以下操作:
final List<QuestionAnswerPair> questionsAndAnswers = new ArrayList<>();
QuestionAnswerPair one = new QuestionAnswerPair("my question", "my answer");
questionsAndAnswers.add(one);
// keep creating and adding new questions and answers as needed
2。使用android.util.Pair
另一个选择是Android中的Pair utility class:
final List<Pair<String, String>> questionsAndAnswers = new ArrayList<>();
questionsAndAnswers.add(Pair.create("question1", "answer1"));
//continue adding as needed
从这一点出发,要对列表进行混排,可以通过搜索“ java中的混排列表”或类似内容在Google中查找示例混排算法。可以在这里找到一个这样的示例:http://www.vogella.com/tutorials/JavaAlgorithmsShuffle/article.html
答案 1 :(得分:0)
我如何随机访问我的字符串数组答案列表?(每次都像不同的(顺序)问题一样。)
当您想更改测验/随机等问题时,建议您同时映射问题和答案。不推荐使用“混洗问题列表”和“答案列表”,也没有解决方案。
我想我看到您可以使用一个(array)list代替我现在使用的String数组。如果这是真的,请您详细说明如何执行此操作。以及如何随机访问。
如何将随机访问的答案与为用户显示的问题相匹配?我读过一些关于为此使用类的东西吗?
使用下面的Java Hashmap
示例。
public class QuestionAnswers {
public static void main(String[] args) {
HashMap<String, String> questionSets = new HashMap<String, String>();
questionSets.put("Question1", "Answer1");
questionSets.put("Question2", "Answer2");
questionSets.put("Question3", "Answer3");
questionSets.put("Question4", "Answer4");
questionSets.put("Question5", "Answer5");
List<Map.Entry<String, String>> list = new ArrayList<Map.Entry<String, String>>(questionSets.entrySet());
System.out.println("************ Questions ************");
Collections.shuffle(list);
for (Map.Entry<String, String> entry : list) {
System.out.println(entry.getKey());
// Here entry.getKey() is Question and if user enters the correct answer
// match that answer with like -> "user_answer".equals(entry.getValue());
}
}
}