我似乎无法正确运行此程序

时间:2019-04-16 14:49:54

标签: vb.net

继续说要按任意键继续,我重新检查了一下,然后得知 但仍然没有运气 请帮助我纠正此问题,并且主子菜单可以为空吗???            Num和Num 1是全局变量

Module Module1
Dim Num, Num1 As Integer

Sub Menu()
    Dim choice As Char

    While choice <> "Q" And choice <> "q"

        Console.Clear()

        Console.WriteLine("Simple Maths Calculator")
        Console.WriteLine()
        Console.WriteLine("enter choice: ")
        Console.WriteLine("enter (a) for add")
        Console.WriteLine("enter (b) for subtract")
        Console.WriteLine("enter (q) for quit")

        choice = Console.ReadLine()

        If choice <> "Q" And choice <> "q" Then
            TwoNumber()
        End If
        If choice = "A" Or "a" Then
            Add()
        ElseIf choice = "B" Or "b" Then
            Subtract()
        End If

    End While
End Sub
Sub Add()
    Console.WriteLine("the solution is: " & Num + Num1)
    Console.ReadLine()
End Sub
Sub Subtract()
    Console.WriteLine("the solution is: " & Num - Num1)
    Console.ReadLine()
End Sub
Sub TwoNumber()
    Console.WriteLine("enter first number")
    Num = Console.ReadLine()
    Console.WriteLine("enter second number")
    Num1 = Console.ReadLine()
End Sub
Sub Main()
    Menu()
End Sub

最终模块

1 个答案:

答案 0 :(得分:0)

除了确保Main()调用Menu()之外,您的大多数问题还来自不正确的数据类型转换。具体来说,将用户的ReadLine()输入字符串转换为整数并检查Char是否相等。在比较.Net中的两个内容时,通常希望您使用“ OrElse”或“ AndAlso”,它们的行为有所不同,并且(至少我)期望通常的And / Or表现如何。但是,如果您正确检查了字符,则甚至不需要,并且/或者在这种情况下。在代码文件的顶部添加“ Option Strict On”和“ Option Explicit On”还有助于及早指出这些错误,以便可以解决它们,并且始终强烈键入代码是一个好主意。防止发生您遇到的转换错误,并帮助确保代码不会以不可预测的方式运行。随着您经验的积累,错误处理也是确保用户输入的数字是一个好主意,因为即使进行了更改,如果用户在TwoNumber()中输入了“ J”或“ 1.1”而不是数字,程序会崩溃或丢失小数点:(但是,现在,对类型转换和比较进行了一些简单的更改,代码看起来像这样,应该可以正常运行

Option Strict On
Option Explicit On

Module Module1

    Dim Num, Num1 As Integer

    Sub Menu()
        Dim choice As Char

        While Not Char.ToLower(choice).Equals("q"c) 'check if choice is equal to Q/q

            Console.Clear()

            Console.WriteLine("Simple Maths Calculator")
            Console.WriteLine()
            Console.WriteLine("enter choice: ")
            Console.WriteLine("enter (a) for add")
            Console.WriteLine("enter (b) for subtract")
            Console.WriteLine("enter (q) for quit")

            choice = CType(Console.ReadLine(), Char)

            If Not Char.ToLower(choice).Equals("q"c) Then
                TwoNumber()
            End If
            If Char.ToLower(choice).Equals("a"c) Then
                Add()
            ElseIf Char.ToLower(choice).Equals("b"c) Then
                Subtract()
            End If

        End While
    End Sub
    Sub Add()
        Console.WriteLine("the solution is: " & Num + Num1)
        Console.ReadLine()
    End Sub
    Sub Subtract()
        Console.WriteLine("the solution is: " & Num - Num1)
        Console.ReadLine()
    End Sub
    Sub TwoNumber()
        Console.WriteLine("enter first number")
        Num = CInt(Console.ReadLine()) 'Convert the inputted string into an integer
        Console.WriteLine("enter second number")
        Num1 = CInt(Console.ReadLine()) 'Convert the inputted string into an integer
    End Sub
    Sub Main()
        Menu()
    End Sub

End Module