2016-03-20 9 views
1

hey, wenn ich eine ganze Zahl in meine case-Anweisung eingeben, produziert es die richtige Ausgabe, aber mit einer Zeichenfolge produziert es jedes Mal das gleiche Ergebnis, kennen Sie irgendwelche Lösungen?Case-Anweisung nur eine Bedingung ausgeführt

 Select Case Grades.Text 
     Case = "A*" 
      score = score + 100 
      MessageBox.Show("You entered an A*") 
      Gcount = Gcount + 1 

     Case >= 90 
      score = score + 100 
      MessageBox.Show("You entered an A*") 
      Gcount = Gcount + 1 

     Case = "A" 
      score = score + 85 
      MessageBox.Show("You entered an A") 
      Gcount = Gcount + 1 
      MessageBox.Show(Gcount) 

     Case < 90 And Grades.Text >= 80 
      score = score + 85 
      MessageBox.Show("You entered an A") 
      Gcount = Gcount + 1 
      MessageBox.Show(Gcount) 

     Case = "B" 
      score = score + 75 
      MessageBox.Show("You entered a B") 
      Gcount = Gcount + 1 
      MessageBox.Show(score) 

     Case < 80 And Grades.Text >= 70 
      score = score + 75 
      MessageBox.Show("You entered a B") 
      Gcount = Gcount + 1 

     Case = "C" 
      score = score + 65 
      MessageBox.Show("You entered a C") 
      Gcount = Gcount + 1 

     Case < 70 And Grades.Text >= 60 
      score = score + 65 
      MessageBox.Show("You entered a C") 
      Gcount = Gcount + 1 
+1

Das sollte nicht streng mit Option kompilieren. 'Select Case Grades.Text' verspricht eine Zeichenfolge, während' Case <70' eine Ganzzahl testet. Und verwenden Sie auch 'AndAlso' anstelle von' Und' – Plutonix

+0

Sie können 'And' noch' AndAlso' nicht in einer Select Case-Anweisung wie dieser verwenden. –

+0

Für einen ausfallsicheren, noch einfachen Code (in diesem Fall) denke ich, dass Sie stattdessen eine 'If'-Anweisung verwenden müssen. –

Antwort

-1

versuchen Sie dies:

Select Case Grades.Text 
     Case Is >= 90 
      MessageBox.Show("You entered an A*") 
     Case Is < 90 And Grades.Text >= 80 
      MessageBox.Show("You entered an A") 
     Case Is < 80 And Grades.Text >= 70 
      MessageBox.Show("You entered a B") 
     Case Is < 70 And Grades.Text >= 60 
      MessageBox.Show("You entered a C") 
    End Select 
+0

Funktioniert nicht, man kann 'And' oder' AndAlso' in einer Select Case-Anweisung nicht verwenden. 'And' führt eine bitweise Operation aus, und' AndAlso' gibt 'True' oder' False' zurück. Und da "Grades.Text" wahrscheinlich niemals die Zeichenfolge "True" auswerten wird, wird das nicht funktionieren. –

0

Sie sollten Option Strict On gesetzt.

So ist es eine Möglichkeit, wie diese

Select case True 
    Case intVariable <= 90 
    ' do something... 
    Case 91 < intVariable AndAlso intVariable <= 100 
    ' do something... 
    Case 100 < intVariable AndAlso intVariable <= 110 
    ' do something... and so on 
End Select