代码之家  ›  专栏  ›  技术社区  ›  Harry

数组中最大的单词

  •  0
  • Harry  · 技术社区  · 16 年前

    嘿,我在为一个程序创建一个简单的按钮时遇到问题,这个程序在数组中找到最大的单词并将其放入文本框。我已经完成了大部分的编码工作(我希望)是想知道是否有人可以帮助我真正地找到数组中最大的文本的代码,因为我正在为此做着最大的努力。

        Private Sub btnLongName_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLongName.Click
            Dim LongName As String
            Dim LengthOfLongestName As Integer
            Dim UltimateName As String
    
    
            For i As Integer = 0 To 5
                LongName = Members(i).Name
                LengthOfLongestName = Len(LongName)
                If Members(i).Name.Length > LengthOfLongestName Then
    
    
    
                End If
            Next i
    
            txtResult.Text = "The longest name is " & UltimateName & " ."
        End Sub
    End Class
    

    感谢您的时间-它是为大学作业,在它上挣扎大时间:(

    编辑:我已经编辑了代码

    2 回复  |  直到 12 年前
        1
  •  10
  •   Daniel LeCheminant    16 年前

    因为这是家庭作业,所以我不会为您编写代码;相反,我会尝试给您一些提示,以指出正确的方向。

    1. 声明适当类型的变量以保存 <longest value so far> ,用该类型的“最短”值初始化它。
    2. 循环遍历数组中的所有值(可能使用 For For Each 循环)

    循环内部的伪代码:

    If the Length of <the value being checked> exceeds _
       the Length of the <longest value so far> Then 
    
       Assign <the value being checked> to the <longest value so far> 
    
    End If
    

    当循环结束时, <迄今为止的最长值> 将是数组中最长的值。

    笔记

    • 您可以使用msdn作为如何使用的参考 a For loop 或A For Each loop (如果你还没学会 为了 但是,您还可以使用 Do Loop )
    • <the value being checked> 在循环的每次迭代中都是不同的;它应该对应于数组中的每个连续值。您可以通过以下方式验证这是否有效 setting a breakpoint .
    • 你可以通过说 myString.Length
    • 如果你知道 Function s,考虑编写一个以数组为参数的函数,并返回数组中最长的值。
    • 你当然可以用linq来完成这个任务,但我不认为这是任务的目标;-]

    对编辑1的回应:

    • 你的 If 语句必须在某种循环内( 为了 , 对于每一个 , Do 等) 我认为这是你所缺少的关键概念。
    • 而不是比较 LongName.Length LengthOfLongestName ,需要将数组中某个条目的长度与 lengthoflongestname公司
    • 你跟我走对了 Members(0).Name.Length ,但不能只检查元素 0 ;您必须检查数组中的每个元素。
    • 考虑到您当前的代码,您可能会分配 <An entry in your array>.Name LongName
    • 一维数组中的最后一个索引是 <array>.Length - 1 <array>.GetUpperBound(0) .

    以下内容并没有真正涉及到你的任务中的任何内容,但我希望它能给你一些关于如何浏览列表中所有项目的想法:

    ' A For loop that does a message box for each of the numbers from 0 to 5 '
    For i as Integer = 0 To 5
       MessageBox.Show(i)
    Next i
    
    ' Code that does a message box with the names of the 2nd, 3rd and last '
    ' entries in Members '
    ' (Remember that the first item is at 0, the second item is at 1, etc...) '
    MessageBox.Show(Members(1).Name)
    MessageBox.Show(Members(2).Name)
    MessageBox.Show(Members(Members.GetUpperBound()).Name)
    

    对编辑2的回应:

    你越来越暖和了…

    • 你应该只更新 长名 LengthOfLongName 如果当前值是迄今为止所看到的最长值(即,应在 如果 声明)
    • 您必须转到数组的最后一个索引,而不是5。请参阅上面的(对第一次编辑的响应),了解如何获取最后一个索引。
    • 你真的不需要 UltimateName 变量;您可以使用 长名 ;
    • 你可能想用 <stringVariable>.Length 而不是 Len(<stringVariable>) 保持一致。
        2
  •  2
  •   Guffa    16 年前

    您缺少的是一个检查每个成员的循环,并将if语句放入其中,使其将名称的长度与迄今为止找到的最长名称进行比较。如果名称较长,请将其放入找到的最长的变量中,并更新长度变量。

    您可以使用第一个成员的名称初始化变量,也可以使用第二个成员及其上的循环来初始化变量,或者使用空字符串初始化变量并循环所有成员。我个人更喜欢后者。