Ich sehe ein paar Dinge, die mit Ihrer Routine verbessern könnten. Zunächst einmal sollte der Vergleich sein:
If a = 6 Or a = 7 Or a = 8 Or a = 9 Or a = 10 Or a = 11 Or a = 12 Then
Die Art und Weise Sie es vor If a = 6 or 7 or 8 ...
taten, nicht funktioniert, weil jede ganze Zahl ohne Vorzeichen wird immer auf true bewerten. Als Ergebnis wurde Ihr Code immer b = true
erhalten. Der Grund, warum Sie immer falsch waren, war, weil Visual Basic Booleans standardmäßig auf false initialisiert und Sie nie check
, also check = false
, etwas zuweisen.
Auf der anderen Seite würde ich eine Funktion erstellen, anstatt einen Wert als Referenz zu übergeben. Eine Funktion würde alle notwendigen Berechnungen durchführen und einen Wert zurückgeben. Der vollständige Code sieht wie folgt:
Function salomonsize(ByVal a As Integer) As Boolean
If a = 6 Or a = 7 Or a = 8 Or a = 9 Or a = 10 Or a = 11 Or a = 12 Then
Return True
Else
Return False
End If
End Function
Private Sub btnCompute_Click(sender As Object, e As EventArgs) Handles btnCompute.Click
Dim check = salomonsize(txtSalomonSize.Text)
If check = False Then
MsgBox("Wrong size")
Exit Sub
End If
End Sub
Die Art und Weise Sie es taten, waren Sie die Zuordnung b = true
und b = false
. Ich glaube, Sie wollten check
zuweisen, um stattdessen wahr oder falsch zu sein, da es der Wert ist, den Sie später überprüfen.
Edit: Ein noch besserer Weg, dies zu tun und so viele Vergleiche vermeiden würde ein Array werden:
Function salomonsize(ByVal a As Integer) As Boolean
Dim ValidNumbers As Integer() = {6, 7, 8, 9, 10, 11, 12}
If ValidNumbers.Contains(a) Then
Return True
Else
Return False
End If
End Function
Wie Sie sehen können, wenn Sie weitere Zahlen addieren müssen, fügen Sie sie einfach zu das Array. Sie können sie sogar bei Bedarf aus einer Datei lesen. Dann verwenden Sie die .Contains
Funktion, um Ihren Wert zu vergleichen. Sie könnten auch einfach tun Return ValidNumbers.Contains(a)
und vermeiden Sie die If/Else ganz:
Wow! Vielen Dank für die schnelle Eingabe! SO hilfreich, da ich schon seit einiger Zeit damit herumspiele. Wenn ich einen höheren Ruf hätte, würde ich abstimmen, aber nett, so hilfreiche Leute hier zu sehen, da ich neu zu stapeln bin. Danke noch einmal! – DodgerT
@DodgerT Froh, dass es geholfen hat. –