Ethan
Ethan

Reputation: 3

Having trouble with Console.Writeline

Can someone explain why the below code won't work? It's supposed to find the average in a group of 15 numbers, then assign a letter grade to them. From what I can tell, the problem is in the If statement, although I can't seem to find what it is that causes the problem.

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

Upvotes: 0

Views: 55

Answers (2)

Nathan C
Nathan C

Reputation: 205

You can't do the following:

If 100 >= Divider >= 90

I believe that is interpreted to be something like

If (100 >= Divider) >= 90

Where it is comparing a boolean converted to a integer.

To get a check for that range you would need to do:

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

In short you have bad syntax with your If Check

As an added note, I would reccomend taking advantage of the strength of conditional logic by skipping the range checks and doing something like:

    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

Upvotes: 1

GrindelOh
GrindelOh

Reputation: 446

You made an error in reasoning.

The Divider in your case has a Maximum value of 15. so it's obviously always an F Grade.

        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

Here you go. I just switched the Divider with Adder and erased some non-essentiel stuff.

Hope this is what you are looking for.

Upvotes: 0

Related Questions