- 締切済み
桁をそろえて出力
以下のようなプログラムで 出力のフォーマットをそろえるには どのようにしたらよいのでしょうか? 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] ); } } } ---------------------- これだと ---------------------- 名前:オデッセイ パート:ボーカル 名前:三上 パート:ベース 名前:峰 パート:パーカッション 名前:小林 パート:キーボード 名前:滝田 パート:ギター ---------------------- のように出力されてしまいますが、本当は ---------------------- 名前:オデッセイ パート:ボーカル 名前:三上 パート:ベース 名前:峰 パート:パーカッション 名前:小林 パート:キーボード 名前:滝田 パート:ギター ---------------------- (画面上パートの位置がずれてますが パートの頭の位置をそろえて出力したい) のように出力したいと思っています。 よろしくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
JDK1.5からは、 Sysout.out.printf が(C言語と同じように)使えます。
- tachiwa
- ベストアンサー率34% (25/73)
#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] ); } } }
- neuron-x
- ベストアンサー率52% (139/266)
次のようなソースはどうでしょうか。 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(); }
お礼
やはり自分でプログラムをする必要があるのですね。 ありがとうございました。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
名前の長さの最大値を調べるか決める。 名前の長さが最大値に満たない場合空白を補う のようにしないとしょうがないような気がします。
お礼
こちらもありがとうございます。 実行したら一瞬うまくいかなくてあれ?と 思いましたが sb.append("[半角スペース]"); ⇒ sb.append("[全角スペース]"); にしたらうまくいきました。 ありがとうございました。