-5

オブジェクト (トランザクション) をテキスト ファイルに書き込もうとしています。Transaction オブジェクトには、カード番号、金額、日付が含まれます。以下のように、オブジェクトをテキスト ファイルに書き込む必要があります。

 Card no      Amount      Date

  12335       900.00     29/09/2010

ObjectOutputStream を使用して、オブジェクトをファイルに書き込みました。しかし、この場合、ギャップを与えることができませんでした。

ヘッダーと整列できるように、トランザクションオブジェクトをいくつかのギャップのあるファイルに書き込む方法は?

どんな助けでも大歓迎です

4

3 に答える 3

0

Transaction オブジェクトがどのように見えるかわかりません。しかし、これはいくつかの手がかりを提供するはずです。System.out.printf() に注意してください。独自の出力ストリームを置き換えることができます。あなたがそれを理解できるように、私はCalendarオブジェクトに余分なものを投げました...

private class Transaction {
    public int cardno;
    public BigDecimal amt;
    public Date someDate;
}

public void zz2() {
    Transaction t = new Transaction();
    t.cardno = 12335;
    t.amt = new BigDecimal("900.00");

    Calendar cal = GregorianCalendar.getInstance(TimeZone.getTimeZone("GMT"));
    cal.set( Calendar.YEAR,        2013 );
    cal.set( Calendar.MONTH,       9);  // zero offset so 9 = Oct              
    cal.set( Calendar.DATE,        1 ); // NOT zero offset...                  
    cal.set( Calendar.HOUR_OF_DAY, (15) );  // 3PM                             
    cal.set( Calendar.MINUTE,      30 );
    cal.set( Calendar.SECOND,      44 );
    cal.set( Calendar.MILLISECOND, 700 );

    t.someDate = cal.getTime();

    DateFormat df = new SimpleDateFormat("MM/dd/yyyy");

    String s = df.format(t.someDate);

    System.out.println("Card no      Amount      Date");
    System.out.printf ("%6d %12s   %10s\n",
                      t.cardno,
                      t.amt,
                      s);
}
于 2013-10-01T04:18:50.480 に答える
0

ObjectOutputStream のギャップが気になるのはなぜですか。主に、ファイルへの書き込みとオブジェクトの再作成に使用されます。人間が読める形式でファイルに書き込むために使用する場合は、オブジェクト出力ストリームではなく、通常のファイル出力ストリームを使用することをお勧めします。

于 2013-10-01T03:52:14.557 に答える
0

何かが足りないのかもしれませんが、ギャップが必要な位置でタブ (文字列で "\t" にエスケープ) を使用してみましたか?

System.out.println("Card no\tAmount\tDate");

値を出力する println ステートメントについても同様です。

于 2013-10-09T06:45:23.250 に答える