数组中最大的单词

时间:2009-03-25 22:59:08

标签: arrays

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

    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 个答案:

答案 0 :(得分:10)

由于这是作业,我不会为你编写代码;相反,我会尝试给你一些提示,指出你正确的方向。

  1. 声明一个适当类型的变量来保存<longest value so far>,并使用该类型的“最短”值对其进行初始化。
  2. 遍历数组中的所有值(可能使用ForFor Each循环)
  3. 循环内部的伪代码:

    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
    

    当循环结束时,<longest value so far>将是数组中最长的值。

    备注

    • 您可以使用MSDN作为参考,了解如何使用a For loopFor Each loop(如果您尚未学习For循环,您还可以使用{{3} })
    • <the value being checked>在循环的每次迭代中都会有所不同;它应该对应于数组中的每个连续值。您可以Do Loop验证这是否有效。
    • 您可以通过说myString.Length
    • 来获取字符串的长度
    • 如果您已了解Function,请考虑编写一个以数组作为参数的函数,并返回数组中最长的值。
    • 你肯定可以用LINQ做到这一点,但我认为这不是作业的目标; - ]

    回复编辑1:

    • 您的If语句需要在某种循环中(ForFor EachDo等等。我认为这是关键概念你错过了。
    • 您需要将数组中条目的长度与LongName.Length
    • 进行比较,而不是将LengthOfLongestNameLengthOfLongestName进行比较
    • 您使用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:

    你变暖了......

    • 如果当前值是您目前看到的最长时间(即应在LongName声明中指定),则只应更新LengthOfLongNameIf
    • 你必须转到数组的最后一个索引,而不是5.参见上面(对你的第一次编辑的回复)如何获得最后一个索引。
    • 你真的不需要UltimateName变量;你可以使用LongName; - ]
    • 您可能希望使用<stringVariable>.Length代替Len(<stringVariable>)来保持一致。

答案 1 :(得分:2)

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

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