2017-02-17 78 views
0

forループを利用して複数の文字列を配列から出力したい場合は、姓と名が完全に1回だけ表示されます。これを行うための私の方法があります。配列から複数の文字列を1つの文字列として出力する

これは私が得る出力されます:印刷中mutlipleフルネームがあるはず

"firstNameのsecondName、"

+0

可能な複製(HTTP [Java配列を印刷する最も簡単な方法は何?]:// stackoverflowの。com/questions/409784/whats-the-simple-way-to-print-a-java-array) – yarcenahs

答えて

0

あなたは非常に近いです。問題は、TANamesを反復処理するたびにlistをリセットしたままにしておくことです。代わりにこれを試してみてください:

public String getTANames() { 
    String list = ""; 
    for(int i = 0; i < TAList.length; i++){ 
     list += TAList[i].first + " " + TAList[i].second + ", "; 
    } 
    return list; 
} 

違いはここに、このラインである:list += TAList[i].first + " " + TAList[i].second + ", ";あなたがlistを設定しないlistに追加されています。

+0

ありがとう、それはトリックでした!ほとんどの場合、私は正しい考えがあることを知っていたので、少し不満を感じていました。 – yarcenahs

+0

ええ、あなたは正しい軌道にいました – SeanKelleyx

+0

私の答えがあなたを助けたら受け入れました – SeanKelleyx

0

現在のコードでは、すべてのループがリスト変数の値を変更します。次のような問題を解決するには、+=で現在=を置き換える:

リスト+ = TAList [i]が1次回+ "" + TAList [i]の.second + "";

public String getTANames() { 
    String list = ""; 
    for(int i = 0; i < TAList.length; i++){ 
     list += TAList[i].first + " " + TAList[i].second + ", "; 
    } 
    return list; 
} 

1

ここでの問題は、各反復では、あなたがリストのための新しいメモリロケーションを作成することであるので、ループが実行されるたびに、リストの値上書きです。これは、すべての反復でlistの値を変更するのではなく、リストに追加することで解決できます。 forループの各反復のために、Javaで不変である文字列のため、

サイドノートは、新しいメモリがリストのために割り当てられます。これはあまり効率的ではありません。代わりに、変更可能なStringBuilderを使用する必要があります。それはこのようになります。

StringBuilder str = new StringBuilder(list); 

次にあなたがSTRに追加することができます

str.append("any string"); 

これは、STR +のStringBuilderを使用して「任意の文字列」

に相当し、メモリは一度だけをstrに割り当てられ、すべての変更されますはるかに効率的ですの場所にを取るでしょう。最後にStringオブジェクトを返すので、StringBuilderオブジェクトのメソッドtoString()を呼び出して、Stringに戻すことができます。

だから、最終的には次のようになります。

public String getTANames() { 
StringBuilder str = new StringBuilder(""); 
for(int i = 0; i < TAList.length; i++){ 
    str.append(TAList[i].first + " " + TAList[i].second + ", ");   
} 
return str.toString(); 

}の

関連する問題