2011-05-06 60 views
4

int値をテキストファイルに保存して保存し、プログラムを再起動すると読み込む小さなプログラムを作成しています。今、私は3つの以上のブール値をテキストファイルに保存する必要があり、私は私のテキストファイル内の新しい行に移動したいときはいつでも、私は、それ文句を言わない、\ nは、 nは動作しません。改行しません。

public Formatter x; 

x.format("%s", "" + m.getPoints() + "\n"); 

とファイルで物事を書いています新しい行に移動すると、int値の直後に直接書き込まれます。私は、新しい行を開始せずに、単に直接int型の値の後ろにブール値を書き込みます両方

 x.format("%s", "" + m.getPoints() + "\n"); 
    x.format("%s", "" + m.getStoreItem1Bought() + "\n"); 

x.format("%s%s", "" + m.getPoints() + "\n", "" + m.getBought() + "\n"); 

ますが、両方をやってみました。これに関する助言?

私はWindows 7 Ultimate 64ビットを使用しています。私のテキストエディタはEclipseです。私はEclipseでもすべてのコードを実行しています。

+0

Windowsシステムを使用していますか? '\ n'は、システム依存の行区切り記号ではなく改行記号を挿入します。 Windowsでは、改行とそれに続く改行があります。それで、間に何もないように見えるかもしれません。 –

+0

右ですが、 '\ r \ n 'を必要とするプログラムはほんの少ししかなく、遭遇したのは孤独な' \ n'をボックスのような文字で表しています)。 – maaartinus

+0

OPを更新しました。 – Stan

答えて

6

、私が使用することをお勧めします:

x.format("%d%n%s%n", m.getPoints(), m.getStoreItem1Bought()); 
+0

更新しました。 'x.format((ローカル)(null)、"%d%n%s%n "、m.getPoints()、m.getStoreItem1Bought());'。最初の 'null'引数は、ローカライズが適用されないようにします。 –

+0

これはうまくいって、新しい行に置いてくれました。皆さんの助けを借りてくれてありがとう。 – Stan

3

フォーマットを使用する場合は、\nの代わりに%nを使用してください。詳細については、Formatter APIを参照してください。このページで「ライン区切り」を検索してください。

+1

テキストファイルに8%nfalse%nを出力しましたが、動作しませんでした。 – Stan

+0

私の悪いです。 PrintStreamのprintfメソッドで使用されているような、Formatterクラスの変種を使用していると思いました。 –

+1

これは、引数ではなく、 'Formatter.format'メソッドの書式文字列部分の'%n'に対してのみ機能します。 – maaartinus

4

使用この代わりに:このオプション作業の

public static String newline = System.getProperty("line.separator"); 

両方。あなたの問題は、出力をフォーマットする方法である:

System.out.format("%s" + newline + "%s" + newline, "test1", "test2"); 
System.out.format("%s%n%s", "test1", "test2"); 

出力:

test1 
test2 
test1 
test2 
+0

3nullfalsenullをテキストファイルに出力しましたが、どちらも機能しませんでした。 – Stan

+0

これは本当にうまくいくはずです。 'newline'が代入される前にクラスの初期化で出力をしていない限り。 – maaartinus

+0

@Stan使用方法を確認してください。私は答えを – Aleadam

0

さて、あなたの構文は面白い..確かにかなりあります。とにかく一緒に文字列をまとめる場合は、フォーマット方法を使用するのはなぜですか?また、使用しているストリームがどこにあるのかわからないので、少しでも推測する必要があります。

とにかく私はあなたがウィンドウを使用していることを賭けています。2.あなたが使用しているエディタ(私はメモ帳に賭けています)はWindowsの正しい改行であるため\ r \ nに反応します。これを修正するには、あなたのコードで\ n \ nハードコードしないでください。代わりに%nを使用し、printf関数を正しく使用してください。あなたが本当に一緒に文字列をつなぎする必要がある場合

そうでない場合:

String newline = System.getProperty("line.separator"); 
x.format("%s", "" + m.getPoints() + newline); 

動作します。

具体的に
1

ここで問題ありません:私はprefereだろうが

System.out.format ("first: %s%s", "" + x + "\n", "" + y + "\n"); 

、ない値を\を統合n個のフォーマット文字列にする:

System.out.format ("second: %s\n%s\n", x, y); 

Formatter.formatを使用すると、同じ動作をします。

+0

\ nを使用しないでください。これは、Linuxシステム(および最新のMac)でのみ動作します。 %nまたはSystem.getProperty( "line.separator")が正しいバージョンです。ソリューションがほとんど機能しない場合は、移植不可能なコードを書く必要はありません。 – Voo

+0

あなたが製品のやりたいことに依存します。 「\ n」が必要な場合は「\ n」、ポータブル出力が必要な場合は「%n」を使用します。現代のエディタ(現代ではないメモ帳を除く)は、しばしば両方の形式の入力を処理できます。 –

関連する問題