我正在为我的计算机科学课进行测验,基本概念是您有15个关键字和15个定义。所有需要随机显示,并出现正确的答案。用户必须将正确的定义与关键字匹配两次,然后该关键字和定义才会再次显示。当所有人都回答了两次测验结束后。在我的代码中导致这个错误的原因是什么?
我已将我的关键字和我的定义存储在同一个文件中,以免它们不同步。文本文件看起来像这样:
Keyword1,Definition1
Keyword2,Definition2
Keyword3,Definition3
...
我得到的问题是在我的代码中有两行。首先,我将参考所有相关的代码,使我所要求的尽可能清楚。我创建了一个类Answer
和看起来像这样:
Public Class Answer
Public Answer As String
Public Answered As Boolean
End Class
我的主要形式form1
看起来是这样的:
Public Class Form1
Const NUMBER_OF_ANSWERS As Integer = 3
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
kv = New Dictionary(Of String, Answer)
For Each line As String In IO.File.ReadAllLines("C:\Users\Matt\Documents\keywords.txt")
Dim parts() As String = line.Split(",")
kv.Add(parts(0), New Answer With {.Answer = parts(1), .Answered = False})
Next
Dim r As New Random
Dim kvRandom As List(Of KeyValuePair(Of String, String)) =
kv.OrderBy(Function() r.Next).ToList
'questions will appear in random order
For Each line As KeyValuePair(Of String, String) In kvRandom
Dim keyword As String = line.Key
Dim correctDefinition As String = line.Value
Dim keywords As New List(Of String)
keywords.Add(keyword)
keywords.AddRange(kv.Keys.Except({keyword}).
OrderBy(Function() r.Next).Take(NUMBER_OF_ANSWERS - 1))
Dim definitionsRandom As List(Of String) =
keywords.Select(Function(x) kv(x)).OrderBy(Function() r.Next).ToList
LabelKeyword.Text = keyword
RadioButtonDef1.Text = definitionsRandom(0)
RadioButtonDef2.Text = definitionsRandom(1)
RadioButtonDef3.Text = definitionsRandom(2)
Next
End Sub
我的错误是在以下两行:
kv.OrderBy(Function() r.Next).ToList
即:
Error 1 Value of type 'System.Collections.Generic.List(Of System.Collections.Generic.KeyValuePair(Of String, flashquiz.Answer))' cannot be converted to 'System.Collections.Generic.List(Of System.Collections.Generic.KeyValuePair(Of String, String))'. C:\Users\Matt\Desktop\flashquiz\flashquiz\Form1.vb 62 11 flashquiz
and
keywords.Select(Function(x) kv(x)).OrderBy(Function() r.Next).ToList
是:
Error 2 Value of type 'System.Collections.Generic.List(Of flashquiz.Answer)' cannot be converted to 'System.Collections.Generic.List(Of String)'. C:\Users\Matt\Desktop\flashquiz\flashquiz\Form1.vb 75 15 flashquiz
我不知道什么是错的,所以任何帮助将不胜感激。 我知道这是关于Answer类,但不完全是。
谢谢修复该行,但我似乎仍然与另一个问题:'kv.OrderBy(Function()r.Next).ToList'我该如何解决这一问题? –
糟糕。错过了那部分。我更新了我的答案 –