我想把我的问题列表随机放在不同的页面上



我想随机化我的问题列表:


object Constants{
const val USER_NAME: String = "user_name"
const val TOTAL_QUESTIONS: String = "total_question"
const val CORRECT_ANSWER: String = "correct_answer"
fun getQuestion(): ArrayList<Question> {
val questionList = ArrayList<Question>()

val que1 = Question(
1,  "Destruídas pela chegada dos europeus, em que continente existiram as civilizações pré-colombianas?",
2, "Ásia","América","África","Oceânia", 2
)
questionList.add(que1)
val que2 = Question(
2, "Qual é a capital da Tailândia?", 3, "Bangkok","Manila","Pattaya","Phuket", 1
)
questionList.add(que2)
val que3 = Question(
3,  "Qual destes países europeus não faz fronteira com nenhum dos restantes?", 1,
"Bélgica","Holanda","Polónia","França", 3
)
questionList.add(que3)
val que4=Question(
4,"Qual naipe do baralho tem desenho de um coração?", 5,
"Ouros","Paus","Copas","Espadas", 3
)
questionList.add(que4)
val que5=Question(
5, "Quem desenhou o Elevador de Santa Justa em Lisboa?", 8,
"Gustave Eiffel","Mesnier de Ponsard","Frank Lloyd Wright","Charles Rennie Mackintosh",
2
)
questionList.add(que5)
val que6=Question(6, "O kitesurf é...", 1,
"Uma ave","Uma cidade","Um desporto","Uma dança", 3

)
questionList.add(que6)
val que7 = Question(
7,"O que podemos encontrar dentro de uma ostra?",2,
"Um caroço","Uma pérola","Um diamante","Um amendoim",2
)
questionList.add(que7)

val que8=Question(
8,"Qual é o primeiro nome de Shakespeare?", 3,
"Wilfred","Winston","Wayne","William",4
)
questionList.add(que8)
val que9=Question(
9,"Em 1987, os Xutos e Pontapés lançaram o seu terceiro álbum. Chama-se 'Circo de...'",5,
"Acrobatas","Bestas","Leões","Feras",4
)
questionList.add(que9)
val que10 = Question(
10, "Complete o provérbio: 'Dezembro frio, calor no...'", 3,
"Domicílio","Aconchego","Abrigo","Estio",4
)
questionList.add(que10)
val que11 = Question(
11, "Qual a capital de Inglaterra?",
1,
"Londres","Madrid","Lisboa","Tóquio", 1
)

questionList.add(que11)
val que12 = Question(
12, "Qual a capital do México?",
1, "Atenas", "Brasilia", "Nova Deli", "Cidade do México", 4
)
questionList.add(que12)
val que13 = Question(
13, "Qual é o melhor amigo do homem?", 2,
"Gato","Veado","Cão","Gorila", 3
)
questionList.add(que13)
val que14 = Question(
14, "Que valor obtemos se multiplicarmos 0,1 por 5,1?", 3,
"5","0,51","51","510",2
)
questionList.add(que14)
val que15 = Question(
15,"Como se chama a orquestra barroca sediada em Lisboa e com direção artística de Massimo Mazzeo?",15,
"Divino Sospiro", "Ava Inferi", "Cacophony", "Vozes da Rádio",1
)
questionList.add(que15)
return questionList
}

在我看来,最好的方法是当我按下启动键时,它会随机化questionList并启动程序,但如果没有告诉我最好的方法或其他建议,那就是问答类构造函数的问答游戏顺序:第一个数字是问题的id、问题、问题的级别、答案,然后是正确答案

您可以使用shuffle来实现您想要的。

有关详细信息:https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/shuffle.html

此外,您可以使用mutableListOf创建第一个列表,而不是添加创建一个空列表并逐个添加项目。

Kotlin代码

  1. 读取CSV文件
  2. 忽略第一行的标题
  3. 映射到字符串数组,使用正则表达式正确处理引号
  4. 映射到数据类
  5. 最后洗牌列表
data class Question(
val id: Int,
val question: String,
val difficulty: Int,
val answerIndex: Int,
val answers: List<String>
)
fun displayQuestion(q: Question) = println("" +
"Question: ${q.question}n" +
"Possible answers:n" +
q.answers.mapIndexed { i, s ->" ${i+1} - $s"}.joinToString("n")
)
fun main(args: Array<String>) {
val questions = File("questions.csv")
.useLines { it.toList() }
.filterIndexed { i, _ -> i != 0 }
.map { it.split(",(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)".toRegex()) }
.map { Question(it[0].toInt(), it[1], it[2].toInt(), it[3].toInt(), it.drop(4)) }
.shuffled()
displayQuestion(questions[0])
print("What is the correct answer (number): ")
val result = (questions[0].answerIndex ==  readLine()?.toInt())
val resultString = if(result) "Correct" else "Wrong"
println("You got the answer: $resultString")
}

结果

Question: Quem desenhou o Elevador de Santa Justa em Lisboa?
Possible answers:
1 - Gustave Eiffel
2 - Mesnier de Ponsard
3 - Frank Lloyd Wright
4 - Charles Rennie Mackintosh
What is the correct answer (number): 2
You got the answer: Correct

文件结构

project/
|
├── src/
|    └── main.kt
└── question.csv

使用电子表格程序在更方便用户的环境中写下你的问题
将其导出为.csv文件。这里有一个链接到谷歌网页上的一个版本。

困难>答案1答案3美洲非洲奥塞尼亚曼谷马尼拉芭堤雅普吉岛HolandaPolóniaFrança>暂停古斯塔夫·埃菲尔梅斯尼尔·德·庞萨弗兰克·劳埃德·赖特查尔斯·伦尼·麦金托什>Uma cidadeUm desportoOma dança威尔弗雷德温斯顿韦恩威廉AcrobatasBestasLeõesFerasDomicílioAconcegoAbrigoEstio马德里里斯本TóquioAtenas巴西利亚新德利墨西哥城//tr>Ava InferiCacophony
Id问题正确答案答案2答问4
1欧洲大陆是否作为哥伦比亚的文明存在22亚洲
2是否是Tailândia的资本31
3是否有资格成为欧洲的一员13Bélgica
4是否有资格获得珊瑚礁53OurosCopasEspadas
5Quem desenhou o Elevador de Santa Justa em Lisboa82
6O kitesurfé13Uma ave
722Um caroço
8莎士比亚的名字是什么34
91987年,Xutos e Pontapés lançaram o seu terceiroálbum。Chama se‘Circo de…’54
10完成证明:"Dezembro frio,calor no.…">34
11英格拉特拉有资本吗11伦敦
12墨西哥有首都吗14
13我的朋友要回家吗23加托VeadoCãoGorila
14是否要将价值乘以0,1或5,152051510
15里斯本的艺术之旅151Divino SospiroVozes da Rádio

最新更新