-2

タイプ Vertex の ArrayList があります。Vertex は、String 型のデータ メンバーを 1 つだけ含む独自のクラスです。頂点の名前を返すメンバー関数 getName() があります。特定の文字列が指定されている場合、ArrayList 内の位置を取得したいと考えています。私はそれを行うために以下のコードを書きました。ただし、常に初期値である -1 を返します。私のコードの問題は何ですか?

    public int map(String vname)
    {
        int pos=-1;
        for(int i=0;i<nodes.size();i++)
        {
            if(nodes.get(i).getName()==vname)
            {
                pos=i;
                break;  
            }
        }
        return pos;
    }

上記のコードでは、nodes は Vertex 型の ArrayList です。

4

5 に答える 5

4

Java では==、オブジェクトの等価性のためでstring1.equals(string2)あり、文字列の等価性のためです

于 2013-05-24T06:18:14.317 に答える
4

代わりにString#equals :を使用してください。Java では、文字列のアドレスを比較します。nodes.get(i).getName().equals(vname)==

于 2013-05-24T06:19:07.720 に答える
2

あなたStringの比較は間違っています...

if(nodes.get(i).getName()==vname)

する必要があります

if(nodes.get(i).getName().equals(vname))
于 2013-05-24T06:18:10.967 に答える
2

に置き換えます

if(nodes.get(i).getName()==vname)

if(nodes.get(i).getName().equals(vname))

文字列を大文字と小文字を比較するため、および大文字と小文字を使用せずに vname を比較するため

if(nodes.get(i).getName().equalsIgnoreCase(vname))
于 2013-05-24T06:33:04.193 に答える