有人可以解释为什么以下代码无法正常工作吗?它应该在一组15个数字中找到平均数,然后为它们分配一个字母等级。据我所知,问题出在If语句中,虽然我似乎无法找到导致问题的原因。
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 :(得分:1)
您无法执行以下操作:
<select multiple>
<option value="A">Alice</option>
<option value="B">Bob</option>
<option value="F">Fred</option>
<option value="K">Kevin</option>
<option value="M">Mary</option>
<option value="S">Susan</option>
</select>
我认为这被解释为类似
If 100 >= Divider >= 90
比较转换为整数的布尔值。
要检查该范围,您需要执行以下操作:
If (100 >= Divider) >= 90
简而言之,您的If Check
语法错误作为补充说明,我建议通过跳过范围检查并执行以下操作来利用条件逻辑的优势:
If (100 >= Divider) AndAlso (Divider >= 90)
答案 1 :(得分: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内容。
希望这就是你要找的东西。