[英]How to find the largest integer(s) between 3 integers
我想找到3个整数之间的最大整数。
我可以通过嵌套If
语句来做到这一点。 由于我还有其他代码要编写,所以这将很长且不整洁。
我想知道是否有一种更简单的方法来找到最大整数(包括假设A
和B
相等但都大于C
)。
PS,您可以使用二维阵列吗?
使用LINQ可以做到这一点:
Dim numbers() As Integer = {1, 3, 5}
Dim max As Integer = numbers.Max()
Debug.Write("Max number in numbers() is " & max.ToString())
输出:
根据与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
从上面的代码中,您可以看到正在使用新Film
填充的Films
类。 然后,我从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种或更多类型的联合排行榜,则可能会出现问题。 该代码仍然有效,但是仅返回其中一种类型。 您可能需要根据该情况扩展代码以适合您的需求。
尝试这样的事情:
Dim max As Integer
max = integer1
If integer2 > max Then
max = integer2
End If
If integer3 > max Then
max = integer3
End If
我没有想到的很多方法可以做到这一点。
这些线适用于任意数量的整数。 将数字放入数组中,然后使用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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.