2012-03-03 17 views
1

私はコンソールベースのインベントリプログラムを構築しており、toString()メソッドをオーバーライドして顧客オブジェクトを画面に表示したいと考えています。toString() - 新しい行の書式設定

私はアプローチには以下のようなことがありますが、どちらもかなり面倒です。どちらが良い練習ですか?

String toString = (name + newLine + 
         addressLine_1 + newLine + 
         addressLine_2 + newLine + 
         city + newLine + 
         country + newLine + 
         postCode + newLine); 


String toString = System.out.println(String.format("%s%n%s%n%s**%n%s%n%s%n%s%n", name, addressLine_1, addressLine_2, city, country, postCode)); 
+1

の両方が同じように厄介です。 :D – ApprenticeHacker

答えて

3

文字列ビルダーを使用してください! StringBuilder(またはJDKの古いバージョンのためのStringBufferが)、それはまた、文字列の連結は、より効率的なだけでなく、より読みやすくなりますされて使用

StringBuilder strBuilder = new StringBuilder(); 
strBuilder.append(name); 
strBuilder.append(System.getProperty("line.separator")); 
strBuilder.append(addressLine_1); 
/* ... */ 

System.out.println(strBuilder.toString()); 
return strBuilder.toString(); 

。また、プラットフォーム間のライン終了を確実にするためにSystem.getProperty("line.separator")を使用してください。あなたは今でシステムに依存する行区切りを得ることができます

+0

+1 line.separatorアプローチの場合。 –

+0

+1 System.getProperty( "line.separator") – keuleJ

0

新しい行が\nを使用して作成することができます私は2つのバリエーションを知っています。

+1

'System.getProperty(" line.separator ")を使うことは、よりクロスプラットフォームです。 – ApprenticeHacker

1

最初のものが好ましい。

近い将来、複雑なオブジェクトを出力するためにプログラムが強化される可能性があります。 Person、それは最初のアプローチに行くためにはるかにクリーンで維持可能です。

文字列連結+はパフォーマンス上の問題ではありません。それまでは、StringBuilderまたはStringBuffer(さらにJDK < 5を使用している場合)

+1

+1、JDKの古いバージョンの 'StringBuffer'を提案するために、私はそれについて言及していませんでした。 – ApprenticeHacker

0

StringBuilderを使用することをお勧めします。 +各回は新しいストリングを作成します。良い演習ではありません。関数toString()をStringBuilderでオーバーライドするだけです。

関連する問題