私は運転免許証テストを作成しています。ユーザは回答を入力し、次に格付け試験が表示されるように第2のフォームをロードする。私はstrExamAnswer()と呼ばれるユーザーの回答を保持するために配列を使用しています。strCorrectAnswerArray()というテスト回答を保持する配列もあります。私は2つを一緒にチェックして、ユーザーが正解を入力したかどうかを確認するループを作成しました。ループデータを追加して、ラベルに「正解」または「間違っている」を挿入します。私はstrResults()と呼ばれる配列を作成して、ループが循環するたびに各ラベルを埋めようとしました。私は20種類のIF THENステートメントでこれをやりたいとは思わない。出力ラベルを入力し、テスト回答と一致する各出力ラベルに変更するにはどうすればよいですか?私は両方のフォームのスクリーンショットを添付しています。 GradedExamフォームは、ユーザーの回答に応じて「正解」または「間違った」という単語を入力する必要があります。ラベル出力に配列を取り込む方法
'Option Strict ON
Option Strict On
Public Class DriverLicenseExam
Dim strCorrectAnswerArray() As String = {"B", "D", "A", "A", "C", "A", "B", "A", "C", "D", "B", "C", "D", "A", "D", "C", "C", "B", "D", "A"} 'Array to hold answer inputs
Dim strExamAnswer(19) As String 'Array to hold user input answer
Dim strResults() As String 'Array to fill output labels with "Correct" or "Incorrect"
Private Sub Get_Answer() 'Fill strExamArray with user's test answers
strExamAnswer(0) = UCase(Me.txtAns1.Text)
strExamAnswer(1) = UCase(Me.txtAns2.Text)
strExamAnswer(2) = UCase(Me.txtAns3.Text)
strExamAnswer(3) = UCase(Me.txtAns4.Text)
strExamAnswer(4) = UCase(Me.txtAns5.Text)
strExamAnswer(5) = UCase(Me.txtAns6.Text)
strExamAnswer(6) = UCase(Me.txtAns7.Text)
strExamAnswer(7) = UCase(Me.txtAns8.Text)
strExamAnswer(8) = UCase(Me.txtAns9.Text)
strExamAnswer(9) = UCase(Me.txtAns10.Text)
strExamAnswer(10) = UCase(Me.txtAns11.Text)
strExamAnswer(11) = UCase(Me.txtAns12.Text)
strExamAnswer(12) = UCase(Me.txtAns13.Text)
strExamAnswer(13) = UCase(Me.txtAns14.Text)
strExamAnswer(14) = UCase(Me.txtAns15.Text)
strExamAnswer(15) = UCase(Me.txtAns16.Text)
strExamAnswer(16) = UCase(Me.txtAns17.Text)
strExamAnswer(17) = UCase(Me.txtAns18.Text)
strExamAnswer(18) = UCase(Me.txtAns19.Text)
strExamAnswer(19) = UCase(Me.txtAns20.Text)
End Sub
Private Sub Display_Answer() 'Fill strResult
Dim frmGradedExam As New GradedExam
frmGradedExam.lblResult1.Text = strResults(0)
frmGradedExam.lblResult2.Text = strResults(1)
frmGradedExam.lblResult3.Text = strResults(2)
frmGradedExam.lblResult4.Text = strResults(3)
frmGradedExam.lblResult5.Text = strResults(4)
frmGradedExam.lblResult6.Text = strResults(5)
frmGradedExam.lblResult7.Text = strResults(6)
frmGradedExam.lblResult8.Text = strResults(7)
frmGradedExam.lblResult9.Text = strResults(8)
frmGradedExam.lblResult10.Text = strResults(9)
frmGradedExam.lblResult11.Text = strResults(10)
frmGradedExam.lblResult12.Text = strResults(11)
frmGradedExam.lblResult13.Text = strResults(12)
frmGradedExam.lblResult14.Text = strResults(13)
frmGradedExam.lblResult15.Text = strResults(14)
frmGradedExam.lblResult16.Text = strResults(15)
frmGradedExam.lblResult17.Text = strResults(16)
frmGradedExam.lblResult18.Text = strResults(17)
frmGradedExam.lblResult19.Text = strResults(18)
frmGradedExam.lblResult20.Text = strResults(19)
End Sub
Private Sub btnSubmit_Click(sender As Object, e As EventArgs) Handles btnSubmit.Click
Dim frmGradedExam As New GradedExam
Call Get_Answer()
For i = 0 To strExamAnswer.Length
If strExamAnswer(i) = strCorrectAnswerArray(i) Then
strResults(i) = "Correct"
Else
strResults(i) = "Incorrect"
End If
Next
独自の配列に各ラベルを入れてみました。これはまだ機能していません。プログラムは動作しますが、GradeExamフォームが読み込まれると、ラベルには表示されません。各ラベルはフォーム上でまだ空白です。
Dim frmGradedExam As New GradedExam
Dim strCorrectAnswerArray() As String = {"B", "D", "A", "A", "C", "A", "B", "A", "C", "D", "B", "C", "D", "A", "D", "C", "C", "B", "D", "A"} 'Array to hold answer inputs
Dim strExamAnswer(19) As String 'Array to hold user input answer
Dim strResults() As String = {frmGradedExam.lblResult1.Text, frmGradedExam.lblResult2.Text, frmGradedExam.lblResult3.Text, frmGradedExam.lblResult4.Text,
frmGradedExam.lblResult5.Text, frmGradedExam.lblResult6.Text, frmGradedExam.lblResult7.Text, frmGradedExam.lblResult8.Text,
frmGradedExam.lblResult9.Text, frmGradedExam.lblResult10.Text, frmGradedExam.lblResult11.Text, frmGradedExam.lblResult12.Text,
frmGradedExam.lblResult13.Text, frmGradedExam.lblResult14.Text, frmGradedExam.lblResult15.Text, frmGradedExam.lblResult16.Text,
frmGradedExam.lblResult17.Text, frmGradedExam.lblResult18.Text, frmGradedExam.lblResult19.Text, frmGradedExam.lblResult20.Text}
をOOP時代に1が一つの場所で一緒にできるだけQ、および正しい答えを格納するためのクラスを検討するのではなくかもしれませんここにさまざまな配列で。 – Plutonix
私は@Plutonixに同意しますが、尋ねられた質問に答えるには、 'Label'コントロールを配列に入れて、複数の配列の同じインデックスの要素にアクセスするために' For'ループを使います。あなたのループカウンタが 'i'ならば、そのインデックスのある配列の答えにアクセスし、別の配列の同じインデックスの正しい答えと比較し、同じインデックスに' Label'の 'Text'をセットすることができます3番目の配列に格納します。 – jmcilhinney
答えを保持している2つの配列とユーザーの入力が正常に動作しています。私の問題は、各ループ(lblResult1、lblResult2、ect ..)に "正しい"か "不正な"配列の各位置をチェックするように各lableを取得する方法です。ForループがstrExamAnswer(0)をstrCorrectAnswerArray(0) strExamAnswer(1)とstrCorrectAnswer(1)をチェックするときにlblResult1のラベルに "correct"または "Incorrect"を表示してからループサイクルをlblResult2にする必要があります。 –