• 締切済み

桁をそろえて出力

以下のようなプログラムで 出力のフォーマットをそろえるには どのようにしたらよいのでしょうか? public class test { public static void main( String args[ ] ) { String names[ ] = new String[5]; String part[ ] = new String[5]; names[0] = "オデッセイ"; names[1] = "三上"; names[2] = "峰"; names[3] = "小林"; names[4] = "滝田"; part[0] = "ボーカル"; part[1] = "ベース"; part[2] = "パーカッション"; part[3] = "キーボード"; part[4] = "ギター"; for ( int i = 0; i < names.length; i++ ) { System.out.println( "名前:" + names[i] + " パート:" + part[i] ); } } } ---------------------- これだと ---------------------- 名前:オデッセイ パート:ボーカル 名前:三上 パート:ベース 名前:峰 パート:パーカッション 名前:小林 パート:キーボード 名前:滝田 パート:ギター ---------------------- のように出力されてしまいますが、本当は ---------------------- 名前:オデッセイ パート:ボーカル 名前:三上    パート:ベース 名前:峰     パート:パーカッション 名前:小林    パート:キーボード 名前:滝田    パート:ギター ---------------------- (画面上パートの位置がずれてますが  パートの頭の位置をそろえて出力したい) のように出力したいと思っています。 よろしくお願いいたします。

みんなの回答

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.4

JDK1.5からは、 Sysout.out.printf が(C言語と同じように)使えます。

  • tachiwa
  • ベストアンサー率34% (25/73)
回答No.3

#2さんの回答が完璧ですが、簡便法として、参考にしてください。 public class WOKtest{ public static void main( String args[ ] ) { String names[ ] = new String[5]; String part[ ] = new String[5]; names[0] = "オデッセイ"; names[1] = "三上"; names[2] = "峰"; names[3] = "小林"; names[4] = "滝田"; part[0] = "ボーカル"; part[1] = "ベース"; part[2] = "パーカッション"; part[3] = "キーボード"; part[4] = "ギター"; for ( int i = 0; i < names.length; i++ ) { int size=names[i].length(); StringBuffer sb=new StringBuffer(); sb.append(names[i]); int pad=10-size; for(int j=0;j<pad;j++){ sb.append(" "); } System.out.println( "名前:" + sb.toString() + " パート:" + part[i] ); } } }

noby4949
質問者

お礼

こちらもありがとうございます。 実行したら一瞬うまくいかなくてあれ?と 思いましたが sb.append("[半角スペース]"); ⇒ sb.append("[全角スペース]"); にしたらうまくいきました。 ありがとうございました。

  • neuron-x
  • ベストアンサー率52% (139/266)
回答No.2

次のようなソースはどうでしょうか。 rightPad()というメソッドで、右側にスペースを補っています。 以下ソース(見やすくするために全角スペースを使用しています) --------------------------------------- /** * Entry point. * @param args */ public static void main(String[] args) {   String names[] = new String[5];   String part[] = new String[5];   names[0] = "オデッセイ";   names[1] = "三上";   names[2] = "峰";   names[3] = "小林";   names[4] = "滝田";   part[0] = "ボーカル";   part[1] = "ベース";   part[2] = "パーカッション";   part[3] = "キーボード";   part[4] = "ギター";   for (int i = 0; i < names.length; i++) {     String fixName = rightPad(names[i], 16);     String fixPart = rightPad(part[i], 16);     System.out.println("名前:" + fixName + " パート:" + fixPart);   } } /** * 文字列の右側にスペースを詰める。 * * @param src 文字列. * @param size スペースを埋めた全体の長さ. * @return 文字列の右側にサイズ分スペースを詰めた文字列.s */ public static String rightPad(String src, int size) {   if (src == null) return null;   // 挿入するスペースの数を計算(Byteサイズで計算)   int pads = size - src.getBytes().length;   if (pads <= 0) return src;   // スペースの挿入.   StringBuffer sb = new StringBuffer(size);   sb.append(src);   for (int i = 0; i < pads; i++) {     sb.append(" ");   }   return sb.toString(); }

noby4949
質問者

お礼

やはり自分でプログラムをする必要があるのですね。 ありがとうございました。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

名前の長さの最大値を調べるか決める。 名前の長さが最大値に満たない場合空白を補う のようにしないとしょうがないような気がします。

関連するQ&A