如何找到3个整数之间的最大整数

时间:2017-03-08 11:41:45

标签: vb.net

我想找到3个整数之间的最大整数。

我可以通过嵌套If语句来做到这一点。因为我还有更多的代码要编写,所以这将是漫长而不整洁的。

我想知道是否有更简单的方法来找到最大的整数(包括假设AB相等但都高于C)。

P.S你能用2D阵列做到这一点吗?

3 个答案:

答案 0 :(得分:2)

使用LINQ执行此操作:

Dim numbers() As Integer = {1, 3, 5}

Dim max As Integer = numbers.Max()

Debug.Write("Max number in numbers() is " & max.ToString())

输出:

enter image description here

按照与OP的对话编辑,希望了解哪种类型排名最佳。

当被问及如何获取数据? OP回复:

  

我在每行都有一个包含movie | genre的文本文件。我读了这个并计算哪个类型(满分为3)是最高的。

我已经起草了一些从文本文件中读取并填充类的代码。

首先让我告诉你代码:

Dim myFilms As New Films

Using sr As New IO.StreamReader("C:\films.txt")

    Do Until sr.Peek = -1

        Dim columns As String() = sr.ReadLine().Split(New Char() {"|"c}, StringSplitOptions.RemoveEmptyEntries)

        'columns(0) = film name
        'columns(1) = genre
        myFilms.Add(New Film(columns(0), columns(1)))
    Loop

End Using

If myFilms.Count > 0 Then
    Dim bestGenre = myFilms.GetBestGenre()

    'Go off and read the genre file based on bestGenre
End If

从上面的代码中,您可以看到正在使用新Films填充的课程Film。然后我从Films类调用一个方法,但前提是有电影可供选择。让我告诉你这两个类的结构:

<强>胶片:

Public Class Film
    Public Key As String

    Public Sub New(ByVal filmName As String,
                   ByVal genre As String)

        _filmName = filmName
        _genre = genre

    End Sub

    Private _filmName As String
    Public ReadOnly Property FilmName As String
        Get
            Return _filmName
        End Get
    End Property

    Private _genre As String
    Public ReadOnly Property Genre As String
        Get
            Return _genre
        End Get
    End Property

End Class

<强>薄膜

Public Class Films
    Inherits KeyedCollection(Of String, Film)

    Protected Overrides Function GetKeyForItem(ByVal item As Film) As String
        Return item.Key
    End Function

    Public Function GetBestGenre() As String

        Return Me.GroupBy(Function(r) r.Genre).OrderByDescending(Function(g) g.Count()).First().Key

    End Function

End Class

我必须注意,虽然这段代码确实有效但如果你有2个或更多类型的联合顶级,它可能会失效。代码仍然有效,但它只返回其中一个类型。您可能希望根据该场景扩展代码以满足您的需求。

答案 1 :(得分:0)

尝试这样的事情:

Dim max As Integer
max = integer1

If integer2 > max Then
   max = integer2
End If

If integer3 > max Then
   max = integer3
End If 

没有多少方法可以让我想到这一点。

答案 2 :(得分:0)

这些行中的某些内容适用于任意数量的整数。 将数字放入数组中,然后使用For[...]Next语句循环遍历数组,将当前成员与max进行比较。如果max较低,请将其设置为当前成员。当循环终止时,max将包含最高的数字:

Dim nums() As Integer = {1, 2, 3}
Dim max As Integer

For i = 0 To nums.Length - 1
    If max < nums(i) Then
        max = nums(i)
    End If
Next