2017-03-25 10 views
-1

私はelection()というarraylistを持っています。なぜコードがこれと同じように名前変数を再割り当てするのではないのですか?なぜこの再割り当てが機能しないのですか?

private static void replaceName(String oldName, String newName){ 
    Candidate c; 
    for(int i = 0;i<election().size();i++){ 
     c = election().get(i); 
     if(c.name == oldName){ 
      election().get(0).name = newName; 
      System.out.println(election().get(0).getName()); 
     } 
    } 
} 
+0

「これが好きです」 - 期待する内容を説明してください。 –

答えて

1

if文の文字列を間違って比較しています。 c.name == oldNameの代わりに、c.name.equals(oldName)である必要があります。

また、間違ったオブジェクトに新しい名前を割り当てています。

elections.get(0).name = newNameではなく、c.name = newNameである必要があります.cはArrayListに格納されているオブジェクトへの参照であるためです。 cの変更はあなたのリストに反映されます。現在のコードでは、ArrayList内の最初の候補の名前が変更されます。なぜなら、iではなく0でget()を呼び出すからです。

+0

あなたは正しいですが、それでも問題は解決しません – CarbonZonda

+0

私の回答を更新しました –

関連する問題