0

現在、次の質問に取り組んでいます。

クラス Name に属性 "surname" と "firstname" が文字列として格納されているとします。「登録」を宣言付きの名前のリストとします。

ArrayList<Name> regist = new ArrayList<Name>();

「regist」が入力されていると仮定して、指定された姓を持つリスト内の名前を検索する以下のメソッドを実装するか、一致する名前がリストに存在しない場合は null を返します。(Java コード、または Java と疑似コードの混合を記述できます)。

public Name find(String surname)
{
  //... to do ...
}

私がこれまでに得た答えは次のとおりです。

public Name find (String surname)
{
  this.surname = surname;
  return null;
}


public Name()
{
  surname = " ";
}

その後、私はここから立ち往生しています。誰かがこのコードを完成させる方法を教えてくれれば、あなたの助けを本当に感謝します.

(適切に完了することができれば、このコードを適切にテストできます)。

4

4 に答える 4

2

のアイテムをループして、指定された名前のオブジェクトをregList返す必要があります。Namefindの現在のコードが正しくありません。findメソッドはnameクラスに含まれておらず、Nameオブジェクト内の変数を直接変更することは許可されていません(または許可されるべきではありません)。

とにかく、解決策は次のとおりです。

public Name find(String surname)
{
    for(Name obj : regList)
    {
       // Check the object's surname with the given one
       // Should check if obj is null
       // Must use .equals to compare strings.
       if(obj.surname.equals(surname))
           return obj;
    }

    // Not found
    return null;
}
于 2012-04-29T22:39:06.620 に答える
1

registをループして、名前がパラメーターと一致するかどうかをテストする必要があります...一致するものが見つからずにループが終了した場合は、nullを返します。

于 2012-04-29T22:38:49.140 に答える
1

次のような意味ですか?

public Name find (String surname)
{
    // loop all names in regist
    for(Name n : regist)
    {
        // find the Name object with matching surname
        if(n.getSurname().equals(surname))
        {
            return n;
        }
    }
    return null;
}
于 2012-04-29T22:40:06.920 に答える
0

宣言した ArrayList には ArrayList<Name> regist = new ArrayList<Name>(); 、検索したい確実な名前が既に含まれている場合があります。それを見つけるには、sudo コードで次のことを行う必要があります。

regist にいくつの名前が格納されているかを調べ、0 から最後の名前まですべての名前を確認します。同じ場合は、姓と名を返します。名と姓の両方が regist に追加されることに注意してください。確実な名前のみをテストし、確実な名前が正しい場合は、名と姓の両方を返す必要があります。

于 2012-04-29T22:45:28.103 に答える