2009-03-25 5 views
0

ちょっと、配列の中で最大の単語を見つけてそれをテキストボックスに入れるプログラムのための単純なボタンの作成に問題があります。私はほとんどのコードを行っています(私が望むことは)誰かが実際に配列の中で最大のテキストを見つけるコードを手伝ってくれるかどうか疑問に思っていました。お時間を配列内の最大の単語

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 

おかげで - その大学の宿題のために、それに大きな時間を苦労:(

編集:私は、これは宿題ですので、私は書きませんコード

+0

えええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええと、 IfとLoopステートメントの周りに頭を下げようとしています:P – Harry

答えて

10

を編集しましたあなたのためのコードと、代わりに私はあなたを正しい方向にあなたを指しますいくつかのヒントを与えることをしようとするでしょう

  1. <longest value so far>を保持するために適切な型の変数を宣言し、「ショアでそれを初期化します。そのタイプの「テスト」値。

    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>意志:アレイ内のすべての値(おそらくFor又はFor Eachループを有する)

あなたのループ内の擬似コードスルー

  • ループ配列内の最長値。

    ノート

    • あなたは(あなたがまだForループを学んでいない場合は、あなたもDo Loopを使用することができます)a For loopまたはFor Each loopを使用する方法の参考として
    • <the value being checked>をMSDNを使用することができますループを通る各反復で異なるでしょう。配列内の連続する各値に対応する必要があります。これがsetting a breakpointによって動作していることを確認できます。
    • あなたは、パラメータとして配列を受け取り、そして配列の最長の値を返す関数を作成することを検討して、あなたはおよそFunction秒を学んだ場合myString.Length
    • を言って、文字列の長さを得ることができます。
    • は確かにあなたがLINQでこれを行うことができます方法がありますが、私はそれは割り当ての目標ではないと思います。 - ]応答で

    を編集する1:

    • あなたIf文では、私はこれがあなたが不足している重要な概念だと思うループ(ForFor EachDo、など)のいくつかの並べ替えの内側にする必要があります。
    • 代わりのLengthOfLongestNameLongName.Lengthを比較し、あなたはあなたがMembers(0).Name.Lengthと正しい軌道に乗っているLengthOfLongestName
    • にあなたの配列のエントリの長さを比較する必要がありますが、あなただけの要素0を確認することはできません。配列内のすべての要素をチェックする必要があります。
    • あなたの現在のコードを考えると、あなたはおそらく、一次元配列の最後のインデックスが<array>.Length - 1または<array>.GetUpperBound(0)あるLongName
    • <An entry in your array>.Nameを割り当てることになります。

    以下は、本当にあなたの割り当てでは何も解決しませんが、私はそれはあなたのリスト内のすべての項目を通過する方法についていくつかのアイデアを与えることを願っています:

    ' 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を編集するには:あなたが暖かくなってきている

    を...

    • 現在表示されている値のうち、現在表示されている時間が最も長い場合は、LongNameLengthOfLongNameのみを更新してください。 Ifステートメントの内側に割り当てる必要があります)
    • 最後のインデックスを取得する方法については、上の(最初の編集に対する応答)を参照してください。
    • UltimateName変数は実際には必要ありません。 LongName; - ]
    • Len(<stringVariable>)の代わりに<stringVariable>.Lengthを使用してもかまいません。
  • +0

    この場合、length = -1に初期化して開始することができます。 – NoahD

    +0

    これは私が十分に行っていないことであると思います。リビジョン>< - 私は必死に努力していますが、どの変数がこれに等しいかを調べようとして自分自身に落ちているようです。今まで分かっているものをペーストして貼り付けます – Harry

    +0

    @Haroon:あなたのコードを投稿すると、追加のヒント/ポインタを提供できてうれしいです... –

    2

    あなたが欠けているのは、各メンバーをチェックし、Ifステートメントを内部に置いて、それまでに見つかった最も長い名前と名前の長さを比較するループです。名前が長ければ、見つかった最も長い変数に入れ、長さ変数を更新します。

    最初のメンバの名前で変数を初期化し、2番目のメンバからループしてonにするか、空の文字列で変数を初期化してすべてのメンバをループすることができます。個人的に私は後者を好む。

    関連する問題