Public Class Form1
    Dim a As Integer
    Dim b As Integer
    Dim c As Integer
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        If CheckBox1.Checked = True Then
            a += 1
        Else : a += 0
        End If
        If CheckBox2.Checked = True Then
            b += 1
        Else : b += 0
        End If
        If CheckBox3.Checked = True Then
            c += 1
        Else : c += 0
        End If
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Dim max As Integer = 0
        Dim d() As Integer = {a, b, c}
        Dim f() As String = {"ch1", "ch2", "ch3"}
        For i As Integer = 0 To 2
            If max < d(i) Then
                max = d(i)
            Else : max = max
            End If
        Next
        Label1.Text = f(max)
    End Sub
End Class
0
user3128987 23 Дек 2013 в 12:58

2 ответа

Лучший ответ

Итак, вкратце, вы используете флажки для увеличения числа каждый раз, когда нажимают Button1. Эти значения хранятся в переменных a, b и c, которые при нажатии на Button2 помещаются в целочисленный массив. По внешнему виду вашего кода вы затем пытаетесь найти, какое из них является наибольшим значением, и отобразить значение из другого массива на основе этого индекса. Проблема, конечно, в том, что вы берете значение d и используете его как индекс для f. Затем значение max становится произвольно большим числом, легко превышающим границы f, которое в вашем примере имеет только три значения. Возможно, вы захотите попробовать еще так:

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    Dim max As Integer = 0
    Dim index as Integer = 0
    Dim d() As Integer = {a, b, c}
    Dim f() As String = {"ch1", "ch2", "ch3"}
    For i As Integer = 0 To 2
        If max < d(i) Then
            max = d(i)
            index = i
        Else : max = max
        End If
    Next
    Label1.Text = f(index)
End Sub

Он по-прежнему использует max в качестве средства сравнения, но принимает во внимание индекс цикла For, когда он достигает нового максимального числа, используя его для извлечения значения f, гарантируя, что значение index никогда не превышает i.

0
Adrian 23 Дек 2013 в 12:15

Значения a, b и c увеличиваются каждый раз, когда вы нажимаете первую кнопку, в зависимости от их отмеченного состояния. Затем, когда вы выполняете цикл и получаете максимум переменных, вы пытаетесь использовать это в качестве индекса в массиве f (). Массив f () может быть только от 0 до 2, но max может быть любым значением. Вы не можете использовать max для выбора из массива. Что ты пытаешься сделать ?

0
Lauren 23 Дек 2013 в 12:15