我目前正在尝试创建一个带有Flutter的应用程序,帮助用户记住法语动词。下面是我的代码片段:
class Quiz {
List<String> questionList;
List<String> answerList;
Quiz(List questionList, List answerList){
this.questionList = questionList;
this.answerList = answerList;
}
}正如您所看到的,我已经创建了一个带有两个参数的Quiz类:一个测试问题列表和一个相应答案列表。
然后,我定义了一个函数,它实际上返回一个'Quiz‘对象。这就是它:
Quiz quizGenerator (questions, answers) {
final Set<int> indexS = Set();
for (int i = 0; i <= 9; i++){
indexS.add(Random().nextInt(49));
}
List<String> testQ;
List<String> testA;
List<int> indexes = indexS.toList();
for (int i = 0; i <= 9; i++){
var element = indexes[i];
testQ[i] = questions[element];
testA[i] = answers[element];
}
var newTest = Quiz(testQ, testA);
return newTest;
}我想让这个函数返回一个'Quiz‘对象,该对象包含10个要测试的动词,这些动词是从一个更大的列表中随机挑选出来的,列表中有50个动词,称为"questions",以及它们从更大的列表" answers“中得到的相应答案。由于我计划通过生成随机索引号来挑选测试题,并且我不希望动词在测试中重复,因此我创建了一组名为“indexS”的整数,并用0-49范围内的10个随机数填充它。这个集合基本上包含了从较大的“问题”列表中提出的十个问题的索引号。
然后,我将该集合转换为一个称为“索引”的整数列表。我还创建了另外两个名为"testQ“和"testA”的列表,它们将分别包含10个测试题及其对应的答案。这两个列表将是“Quiz”对象的属性。然后,我使用一个for循环,通过使用存储在“索引”列表中的随机索引号,用十个测试题及其答案填充“testQ”和“testA”。所有这一切的最终结果是“quizGenerator”返回了一个“Quiz”对象。
然而,当我尝试调用‘quizGenerator’时,我得到了以下错误:
The following NoSuchMethodError was thrown while handling a gesture:
The method '[]=' was called on null.
Receiver: null
Tried calling: []=(0, "to open")如果这个问题的答案是显而易见的,我很抱歉,但我刚刚开始编程,我已经在互联网上搜索了几天,但没有多少运气。如果有什么不清楚的地方,或者你需要其他东西来更好地回答我的问题,请告诉我。谢谢!
编辑:
以下是“问题”和“答案”的声明:
List<String> answers = ['rentrer', 'vivre', 'rendre', 'tenir', 'oublier', 'travailler', 'manger', 'entrer', 'devenir', 'commencer', 'payer', 'tirer', 'ouvrir', 'changer', 'excuser', 'dormir', 'occuper', 'marcher', 'envoyer', 'apprendre', 'boire', 'garder', 'montrer', 'asseoir', 'porter', 'prier', 'servir', 'écrire', 'retrouver', 'gagner', 'acheter', 'rappeler', 'lire', 'monter', 'quitter', 'emmener', 'toucher', 'continuer', 'raconter', 'repondre', 'sauver', 'rencontrer', 'fermer', 'valoir', 'compter', 'bouger', 'apporter', 'décider', 'vendre', 'expliquer',];
List<String> questions = ['to bring in','to live','to return','to hold','to forget','to work','to eat','to go in','to become','to start','to pay','to pull','to open','to change','to forgive','to sleep','to occupy','to walk','to send','to learn','to drink','to look after','to show','to sit down','to carry','to pray','to serve','to write','to find', 'to win', 'to buy', 'to remind', 'to read', 'to go up', 'to leave', 'to take', 'to touch', 'to continue', 'to tell', 'to answer', 'to save', 'to meet', 'to close', 'to hold', 'to count', 'to move', 'to bring', 'to decide', 'to sell', 'to explain',];发布于 2021-08-07 17:57:24
未初始化testQ和testA。用一个空列表初始化它们。
List<String> testQ = [], testA = [];使用add方法将数据添加到列表中。
testQ.add(questions[element]);
testA.add(answers[element]);如果一些随机数是相同的,那么set将只存储唯一的。不要使用集合,直接使用列表,或者在变量可以是某个列表或集合的情况下,使用i <= _variable.length而不是i <= 9。
https://stackoverflow.com/questions/68694862
复制相似问题