2017-11-22 21 views
2

私のスコアカウンターに問題はありません。msgboxがポップアップすると、受け取ったスコアは表示されず、ちょうど "0"になります。私はプログラムカウンターの使い方の答えを教えてくれる他のさまざまな質問を見てきましたが、その解決策は私にとってはうまくいかないようです。ラジオボタンを使用したカウンターの選択肢のクイズ

Dim grade1, percentage1 As String 
Dim score1 As Integer 

^^ declorations

score1 = "0" 
    If RadioButton1.Checked = True Then 
     score1 = score1 + 1 
    ElseIf RadioButton2.Checked = True Then 
     score1 = score1 + 0 
    End If 
    If RadioButton4.Checked = True Then 
     score1 = score1 + 1 
    ElseIf RadioButton3.Checked = True Then 
     score1 = score1 + 0 
    End If 
    If RadioButton5.Checked = True Then 
     score1 = score1 + 1 
    ElseIf RadioButton6.Checked = True Then 
     score1 = score1 + 0 
    End If 
    If RadioButton8.Checked = True Then 
     score1 = score1 + 1 
    ElseIf RadioButton7.Checked = True Then 
     score1 = score1 + 0 
    End If 
    If RadioButton9.Checked = True Then 
     score1 = score1 + 1 
    ElseIf RadioButton10.Checked = True Then 
     score1 = score1 + 0 
    End If 
    Select Case score1 
     Case 1 
      score1 = 0 
      grade1 = "U" & percentage1 = "0%" 
     Case 2 
      score1 = 1 
      grade1 = "D" & percentage1 = "20%" 
     Case 3 
      score1 = 2 
      grade1 = "C" & percentage1 = "40%" 
     Case 4 
      score1 = 3 
      grade1 = "B" & percentage1 = "60%" 
     Case 5 
      score1 = 4 
      grade1 = "A" & percentage1 = "80%" 
     Case 6 
      score1 = 5 
      grade1 = "A*" & percentage1 = "100%" 

    End Select 

End Sub 
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
    MsgBox("Your score is" + score1.ToString, MsgBoxStyle.Information) 
    MsgBox("Your grade is" + grade1, MsgBoxStyle.Information) 
    MsgBox("Your percentage is" + percentage1, MsgBoxStyle.Information) 
End Sub 
+3

あなたは、ファイルの先頭に 'オプション厳格on'のを追加する必要があります。 '' 0 ''は整数ではありません。その後、ブレークポイントを設定し、コードをデバッグします。また[ask]を読んで[tour]を取る。システムはおそらくあなたが投稿できる頻度を制限することに近づいています – Plutonix

+1

そのコードを実行しているイベントは何ですか?デバッガを使用します。 'score1 = score1 + 0'ですね? – LarsTech

+0

簡単なアドバイス: 'score1 = score1 + 0'のようなものは避けてください。コードが長くなるだけです。 'score1 = score1 + 1'は' score1 + = 1'と書くことができますが、これは短く、多くの言語でできる優れた方法です。 'RadioButton8.Checked = True Then Then'は' If RadioButton8.Checked Then'と書かれていなければなりません。これはブール値の意味です。最後に、同様のデータセットを操作するときに、多くの 'if - then'や' select'ステートメントの代わりにListsやDictionariesを使うようにしてください。 – Bob

答えて

0

(私はこの質問がまだアクティブであると思います?) 私が思うあなたはまだプログラミング初心者であることを、あなたの質問に基づきます。 ボブがいくつかの便利なヒントを書いて、今あなたの質問に答えようとしています。 変更が必要な点やその他の改善点がいくつかあります。

まず:

score1 = "0"score1 = 0でなければなりません。 score1を整数として宣言しましたが、引用符で値を文字列に設定しようとしました。 Plutonixが言及したように。第二に

あなたは少し複数の選択肢のクイズゲームを作成し、ラジオボタンを使用します。私が知っているものから、ラジオボタンが作成されたのは1つの選択肢だけでした。 ラジオボタンをチェックすると、他のラジオボタンはすべてオフになります。 あなたが行くべきコントロールはチェックボックスです。 ヒント:ユーザーが両方のチェックボックスをオンにできることに注意してください。チェックされている場合は、最初のチェックボックスがオフになるまで他を無効にする必要があります。

サード:

あなたはscore1 = score1+0の代わりに書くべきか、尋ねました。 答え:何もありません。条件にコードを書いても何も起こりませんし、スコアは変わりません。

など。 - >

If CheckBox9.Checked = True Then 
      score1 = score1 + 1 
     ElseIf RadioButton10.Checked = True Then 
     End If 

ただし、このコードをさらに改善することができます。 CheckBox.Checkedはブール値(真/偽)を返す関数です。次の2つのラインでそれを行う2つの異なる値に2つの変数を設定したい場合は

grade1 = "U" & percentage1 = "0%" 

If CheckBox9.Checked Then 
     score1 +=1 

第四:あなたはこのような場合の条件のコードを短縮することができます。

grade1 = "U" 
percentage1 = "0%" 

これ以外にも、選択されたケースにscore1 = ...は必要ありません。 選択されたケースでは、与えられた変数score1の値を検索し、ケースを選択します。ここで、score1はケースの式と等しくなります。 たとえば、ユーザーが正しい回答をすべてのボックスにチェックインした場合、score1 = 5なので、ケース5で選択ケースがコードを実行します。

のSelect Case情報:

https://docs.microsoft.com/en-us/dotnet/visual-basic/language-reference/statements/select-case-statement

なく、少なくとも最後に:

あなたがサブにチェックボックスのロジックを記述する必要があります

Private Sub CalculateScore() 

    If CheckBox1.Checked Then 
     score1 = score1 + 1 

'Here comes the code for the other checkboxes and the select case... 
End Sub 

は、このサブなければなりませんMsgBoxesが呼び出される前にButton1_Clickイベント内で呼び出されます。ボブが言いましたように。

この投稿で願っている質問のほとんどが回答されています。 もし私が不正確であったり、あなたが何かを理解できないのであれば、気軽に聞いてください。

よろしく

SgtMeowBlank

関連する問題