Member 14621986 Ответов: 5

Как написать код на vb.


Проблема заключается в выходе.Выход из класса-это неправильно.Затем в лучших и худших предварительно сформированных единицах действительно приносят выход .Перепишите код в vb, чтобы я мог знать проблему в коде.

Что я уже пробовал:

Module MODULE2
    Sub main()
        Console.WriteLine("operatorclass")
        Dim age As Integer
        Dim Fname As String
        Dim oop, pda As Integer
        Dim Total, Average, grade As Double
        Console.WriteLine("Please write your FName?")
        Fname = Console.ReadLine()
        Console.Write("Age")
        age = Console.ReadLine()
        Console.WriteLine("oop")
        oop = Console.ReadLine()
        Console.WriteLine("pda")
        pda = Console.ReadLine()
        Total = oop + pda
        Average = Total / 2
        Console.WriteLine("Total is " & Total & ", Average is " & Average)
        Console.WriteLine("---------")

       
        If (Average >= 70) Then
            Console.WriteLine("A")
        ElseIf (Average >= 60 - 69) Then
            Console.WriteLine("B")
        ElseIf (Average > 50 - 59) Then
            Console.WriteLine("C")
        ElseIf (Average >= 40 - 49) Then
            Console.WriteLine("D")
        ElseIf (Average <= 39) Then
            Console.WriteLine("FAIL")
        End If
        Console.WriteLine("grade")
        Console.WriteLine("Age bracket")
        If (age < 16) Then
            Console.WriteLine("Teenager")
        ElseIf (age >= 17 - 35) Then
            Console.WriteLine("Youth")
        ElseIf (age >= 36) Then
            Console.WriteLine("Adult")

        End If
        Console.WriteLine("Best performed unit")
        If (oop > pda) Then
            Console.WriteLine("oop")
        Else
            Console.WriteLine("oop")
        End If

        Console.WriteLine("worst performed unit")
        If (oop < pda) Then
            Console.WriteLine("pda")
        Else
            Console.WriteLine("pda")
        End If
        Console.ReadKey()
    End Sub
End Module

5 Ответов

Рейтинг:
2

RickZeeland

Вы, вероятно, ожидаете использовать диапазон, но на самом деле это вычитание, например, в этой строке:

ElseIf (age >= 17 - 35) Then

Так и должно быть:
ElseIf (age >= 17 And age <= 35) Then

То Выберите Случай оператор поддерживает диапазоны, см. ответы здесь: Диапазон чисел в операторах IF - переполнение стека[^]


Рейтинг:
2

Patrice T

Ваша проблема заключается в следующем :

If (Average >= 70) Then
    Console.WriteLine("A")
ElseIf (Average >= 60 - 69) Then ' 60 - 69 is a subtraction and its value is 9
    Console.WriteLine("B")
ElseIf (Average > 50 - 59) Then ' Idem
    Console.WriteLine("C")
ElseIf (Average >= 40 - 49) Then ' Idem
    Console.WriteLine("D")
ElseIf (Average <= 39) Then
    Console.WriteLine("FAIL")
End If

Итак, ваш код выглядит следующим образом :
If (Average >= 70) Then
    Console.WriteLine("A")
ElseIf (Average >= 9) Then
    Console.WriteLine("B")
ElseIf (Average > 9) Then
    Console.WriteLine("C")
ElseIf (Average >= 9) Then
    Console.WriteLine("D")
ElseIf (Average <= 39) Then
    Console.WriteLine("FAIL")
End If

Правильный способ кодирования заключается в том, чтобы воспользоваться тем фактом, что при достижении заданного условия все предыдущие условия потерпели неудачу
If (Average >= 70) Then
    Console.WriteLine("A")
ElseIf (Average >= 60) Then ' when you are here, you already know that (Average >= 70) failed, thus (Average < 70)
    Console.WriteLine("B")
ElseIf (Average > 50) Then ' Idem
    Console.WriteLine("C")
ElseIf (Average >= 40) Then ' Idem
    Console.WriteLine("D")
Else ' all previous conditions failed, thus (Average < 40)
    Console.WriteLine("FAIL")
End If


Рейтинг:
0

Richard MacCutchan

Простой способ:

If (age < 16) Then
    Console.WriteLine("Teenager")
ElseIf (age < 36) Then ' you already know it is greater than 16
    Console.WriteLine("Youth")
Else                   ' so it must be 36 or greater
    Console.WriteLine("Adult")
End If


Рейтинг:
0

Robert Bettinelli

Как насчёт..

Sub main()
        Console.WriteLine("operatorclass")

        Dim age As Integer
        Dim Fname As String
        Dim oop, pda As Integer
        Dim Total, Average As Double
        Dim grade As String

        Console.WriteLine("Please write your FName?")
        Fname = Console.ReadLine()
        Console.Write("Age")
        age = Console.ReadLine()
        Console.WriteLine("oop")
        oop = Console.ReadLine()
        Console.WriteLine("pda")
        pda = Console.ReadLine()
        Total = oop + pda
        Average = Total / 2
        Console.WriteLine("Total is " & Total & ", Average is " & Average)
        Console.WriteLine("---------")

        grade = "Fail"
        Select Case Average
            Case <= 49
                grade = "D"
            Case <= 59
                grade = "C"
            Case <= 69
                grade = "B"
            Case > 60
                grade = "A"
        End Select

        Console.WriteLine("grade:" & grade)


        Console.WriteLine("Age bracket")
        Select Case age
            Case < 16
                Console.WriteLine("Teenager")
            Case <= 35
                Console.WriteLine("Youth")
            Case > 35
                Console.WriteLine("Adult")
        End Select
        Console.WriteLine("Best performed unit")
        If (oop > pda) Then
            Console.WriteLine("oop")
        Else
            Console.WriteLine("oop")
        End If

        Console.WriteLine("worst performed unit")
        If (oop < pda) Then
            Console.WriteLine("pda")
        Else
            Console.WriteLine("pda")
        End If
        Console.ReadKey()
    End Sub


Рейтинг:
0

Robert Bettinelli

Как насчёт..

Sub main()
        Console.WriteLine("operatorclass")

        Dim age As Integer
        Dim Fname As String
        Dim oop, pda As Integer
        Dim Total, Average As Double
        Dim grade As String

        Console.WriteLine("Please write your FName?")
        Fname = Console.ReadLine()
        Console.Write("Age")
        age = Console.ReadLine()
        Console.WriteLine("oop")
        oop = Console.ReadLine()
        Console.WriteLine("pda")
        pda = Console.ReadLine()
        Total = oop + pda
        Average = Total / 2
        Console.WriteLine("Total is " & Total & ", Average is " & Average)
        Console.WriteLine("---------")

        grade = "Fail"
        Select Case Average
            Case <= 49
                grade = "D"
            Case <= 59
                grade = "C"
            Case <= 69
                grade = "B"
            Case > 60
                grade = "A"
        End Select

        Console.WriteLine("grade:" & grade)


        Console.WriteLine("Age bracket")
        Select Case age
            Case < 16
                Console.WriteLine("Teenager")
            Case <= 35
                Console.WriteLine("Youth")
            Case > 35
                Console.WriteLine("Adult")
        End Select
        Console.WriteLine("Best performed unit")
        If (oop > pda) Then
            Console.WriteLine("oop")
        Else
            Console.WriteLine("oop")
        End If

        Console.WriteLine("worst performed unit")
        If (oop < pda) Then
            Console.WriteLine("pda")
        Else
            Console.WriteLine("pda")
        End If
        Console.ReadKey()
    End Sub


Richard Deeming

Вы дважды отправляли один и тот же ответ.

Robert Bettinelli

ой отправил дважды.. Ну что ж.. Используйте лучшее из двух. :-)