在Console.Writeline上遇到问题

时间:2016-01-15 07:37:54

标签: vb.net

有人可以解释为什么以下代码无法正常工作吗?它应该在一组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

2 个答案:

答案 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内容。

希望这就是你要找的东西。