2016-01-15 33 views
0

有人可以解釋爲什麼下面的代碼不會工作?它應該在一組15個數字中找到平均值,然後爲它們分配一個字母等級。從我所知道的問題來看,問題出在If語句中,儘管我似乎無法找到導致問題的原因。Console.Writeline有問題

Module Module1 

    Sub Main() 

     Dim Input1 As Integer 
     Dim Input2 As Integer 
     Dim Input3 As Integer 
     Dim Input4 As Integer 
     Dim Input5 As Integer 

     Dim Input6 As Integer 
     Dim Input7 As Integer 
     Dim Input8 As Integer 
     Dim Input9 As Integer 
     Dim Input10 As Integer 

     Dim Input11 As Integer 
     Dim Input12 As Integer 
     Dim Input13 As Integer 
     Dim Input14 As Integer 
     Dim Input15 As Integer 

     Dim Adder As Integer 
     Dim Divider As Integer 

     Console.WriteLine("Please enter number 1/15") 
     Input1 = Console.ReadLine() 
     Console.WriteLine("Please enter number 2/15") 
     Input2 = Console.ReadLine() 
     Console.WriteLine("Please enter number 3/15") 
     Input3 = Console.ReadLine() 
     Console.WriteLine("Please enter number 4/15") 
     Input4 = Console.ReadLine() 
     Console.WriteLine("Please enter number 5/15") 
     Input5 = Console.ReadLine() 

     Console.WriteLine("Please enter number 6/15") 
     Input6 = Console.ReadLine() 
     Console.WriteLine("Please enter number 7/15") 
     Input7 = Console.ReadLine() 
     Console.WriteLine("Please enter number 8/15") 
     Input8 = Console.ReadLine() 
     Console.WriteLine("Please enter number 9/15") 
     Input9 = Console.ReadLine() 
     Console.WriteLine("Please enter number 10/15") 
     Input10 = Console.ReadLine() 

     Console.WriteLine("Please enter number 11/15") 
     Input11 = Console.ReadLine() 
     Console.WriteLine("Please enter number 12/15") 
     Input12 = Console.ReadLine() 
     Console.WriteLine("Please enter number 13/15") 
     Input13 = Console.ReadLine() 
     Console.WriteLine("Please enter number 14/15") 
     Input14 = Console.ReadLine() 
     Console.WriteLine("Please enter number 15/15") 
     Input15 = Console.ReadLine() 

     Adder = (Input1) + (Input2) + (Input3) + (Input4) + (Input5) + (Input6) + (Input7) + (Input8) + (Input9) + (Input10) + (Input11) + (Input12) + (Input13) + (Input14) + (Input15) 
     Divider = Adder/15 

     If 100 >= Divider >= 90 Then 
      Console.WriteLine("Your average Grade is an A, and your average in numbers is {0}", Divider) 
     ElseIf 89 >= Divider >= 80 Then 
      Console.WriteLine("Your average Grade is a B, and your average in numbers is {0}", Divider) 
     ElseIf 79 >= Divider >= 70 Then 
      Console.WriteLine("Your average Grade is a C, and your average in numbers is {0}", Divider) 
     ElseIf 69 >= Divider >= 60 Then 
      Console.WriteLine("Your average Grade is a D, and your average in numbers is {0}", Divider) 
     ElseIf 59 >= Divider Then 
      Console.WriteLine("Your average Grade is an F, and your average in numbers is {0}", Divider) 
     End If 
     Console.ReadLine() 
    End Sub 

End Module 
+0

發現了什麼錯誤? – Ian

回答

1

你不能做到以下幾點:

If 100 >= Divider >= 90 

我相信,被解釋爲類似

If (100 >= Divider) >= 90 

凡有比較一個布爾值轉換爲整數。

要獲得該範圍內的檢查,你需要做的:

If (100 >= Divider) AndAlso (Divider >= 90) 

總之你有不良的語法與你如果檢查

作爲一個補充說明,我會建議服用的優勢跳過範圍檢查並執行類似操作的條件邏輯的強度:

If Divider >= 90 Then 
     Console.WriteLine("Your average Grade is an A, and your average in numbers is {0}", Divider) 
    ElseIf Divider >= 80 Then 
     Console.WriteLine("Your average Grade is a B, and your average in numbers is {0}", Divider) 
    ElseIf Divider >= 70 Then 
     Console.WriteLine("Your average Grade is a C, and your average in numbers is {0}", Divider) 
    ElseIf Divider >= 60 Then 
     Console.WriteLine("Your average Grade is a D, and your average in numbers is {0}", Divider) 
    Else 
     Console.WriteLine("Your average Grade is an F, and your average in numbers is {0}", Divider) 
    End If 
+0

非常感謝。 – Ethan

+0

不客氣。如果您覺得我的回覆是正確的,請相應標記答案。 –

0

您在推理中犯了一個錯誤。

Divider在你的情況下有15的最大值,所以它顯然總是一個F級。

 If Adder >= 90 Then 
      Console.WriteLine("Your average Grade is an A, and your average in numbers is {0}", Divider) 
     ElseIf Adder >= 80 Then 
      Console.WriteLine("Your average Grade is a B, and your average in numbers is {0}", Divider) 
     ElseIf Adder >= 70 Then 
      Console.WriteLine("Your average Grade is a C, and your average in numbers is {0}", Divider) 
     ElseIf Adder >= 60 Then 
      Console.WriteLine("Your average Grade is a D, and your average in numbers is {0}", Divider) 
     ElseIf Adder < 60 Then 
      Console.WriteLine("Your average Grade is an F, and your average in numbers is {0}", Divider) 
     End If 

你在這裏。我只是將Divider換成了Adder並刪除了一些非essentiel的東西。

希望這是你在找什麼。

+0

從我的理解來看,他的數字並不侷限於1-15之間,它只是一組15個數字,也就是nr。 1是90和nr。 2是5等等。 –

+2

@SimonJensen這就是爲什麼我寫了「希望我這是你在找什麼」。由於我的頭腦閱讀技巧並不完美,所以我必須處理給出的內容。 如果這不是他尋找的解決方案,我會很樂意幫助他進一步:) – GrindelOh

+0

聽起來很合理,對不起,如果我看起來粗魯,只是試圖澄清一些混淆。 –