如何创建子程序以按升序对数字进行排序? - VB控制台

时间:2013-11-16 13:08:05

标签: vb.net visual-studio-2010

如果有人可以帮我解决我的问题,那就太好了。

我需要创建一个VB控制台应用程序,使用子过程将3个整数值按升序排序。子过程(例如,称为sortnumber())需要接受3个整数参数,然后按升序对值进行排序。

我将如何做到这一点,有人能指出我正确的解决方案,尽可能简单的代码。

感谢。

模块模块1

Sub Main()
    Dim num1, num2, num3 As Integer
    Console.WriteLine("Enter first number:")
    num1 = Console.ReadLine
    Console.WriteLine("Enter second number:")
    num2 = Console.ReadLine
    Console.WriteLine("Enter third number:")
    num3 = Console.ReadLine
sortnumber()
End Sub
Sub sortnumber(ByVal num1 As Integer, ByVal num2 As Integer, ByVal num3 As Integer)
    Dim
End Sub

我不知道这是对的还是我要去的地方..

2 个答案:

答案 0 :(得分:0)

Module Module1

Public Sub sortnumber(ByVal n1 As Integer, ByVal n2 As Integer, ByVal n3 As Integer)

    Dim l As List(Of Integer) = New List(Of Integer)
    l.Add(n1)
    l.Add(n2)
    l.Add(n3)
    l.Sort()
    For Each h In l
        Console.WriteLine(h.ToString)
    Next

End Sub
Sub Main()
    Dim num1, num2, num3 As Integer
    Console.WriteLine("Enter first number:")
    num1 = Console.ReadLine
    Console.WriteLine("Enter second number:")
    num2 = Console.ReadLine
    Console.WriteLine("Enter third number:")
    num3 = Console.ReadLine
    Console.WriteLine("Calculating ......")
    sortnumber(num1, num2, num3)
    MsgBox("done")

End Sub

End Module

答案 1 :(得分:0)

当您使用VB.NET进行编程时,可能会尝试将错误的值放入变量中。有两个地方可以防止这种情况:您的编程可能会出现这样的错误,并且用户可能输入错误的信息(例如输入“A”而不是数字)。

Visual Studio中的VB提供了一种检测第一个问题的方法:Option Strict On

在你的程序中,你试图将一个String(从ConsoleReadLine)读入一个Integer(例如num1)。这不是真的正确。如果没有Option Strict On,VB会尝试理解你所做的事情,但有时它会猜到你的意图是错误的。如果您使用Option Strict On,它会通知您出现问题。幸运的是,有一些函数可以从String转换为Integer(可以使用许多其他转换)。

如果要输入大量数字,可能很容易调整程序。说你突然决定要排序四个数字;然后你必须添加另一个变量如num4并重新编写你的排序过程。当您事先知道它将具有多少条目时,Array是一种有用的类型,因为您可以使用一个名称来引用它,并使用一个数字来表示您要使用哪个条目。 List是一种超级数组,因为有很多内置的操作是有用的。

如果不解决用户输入无效值的问题,您的程序可能如下所示:

Option Strict On

Module Module1

    Sub Main()
        Dim nums As New List(Of Integer)

        Console.Write("Enter first number: ")
        nums.Add(Integer.Parse(Console.ReadLine()))
        Console.Write("Enter second number: ")
        nums.Add(Integer.Parse(Console.ReadLine()))
        Console.Write("Enter third number: ")
        nums.Add(Integer.Parse(Console.ReadLine()))

        nums.Sort()

        Console.WriteLine("The sorted numbers are:")
        ' The index starts at 0, not 1.
        For i As Integer = 0 To nums.Count - 1
            Console.WriteLine(nums(i).ToString())
        Next

        Console.ReadLine()

    End Sub

End Module