Thinkers'Studio
JavaとC言語の自習ツール
3桁ごとにカンマをはさむプログラム例( Java版 )

 金額などの表示で使う、3桁ごとにカンマを入れるプログラムのサンプルです。
 Java の機能を使うともっと簡単にできますが、ここでは学習のため、桁数を数えながらカンマを挟む例を示します。

 まず、数値を String型文字列に変換します。
 そして次のような繰り返し処理で、カンマを挟んだ逆さまの文字列を作ります。 (例 1234567 --> "765,432,1")
  ・ 文字列の最後の文字からひと文字ずつ取り出し、作業用に保存しながら桁数を数える
  ・ 3 桁の区切りならカンマを入れる
 最後に、文字列をひっくり返して変数にセットします。 (例 "765,432,1" --> "1,234,567")

【 3桁ごとにカンマをはさむプログラム例( Java版 ) 】
class CommaFormat {
    int num;
    String s;

    CommaFormat( int n ) {
        num = n;
        s = "";
    }
    void insComma() {
        String temp = "";
        boolean minus = false;

        if( num < 0 ) minus = true;
        String nstr = Integer.toString( Math.abs(num) );
        int len = nstr.length();
        int keta = 0;
        /* 下位から順に数字を取り出し3桁の区切りに,を入れる */
        for( int i = len-1; i >= 0; i-- ) {
            temp += nstr.charAt(i);
            keta++;
            if( keta % 3 == 0 && keta != len ) temp += ",";
        }
        if( minus ) temp += "-";

        /* sに逆順にコピーする */
        for( int i = temp.length()-1; i >= 0; i-- )
            s += temp.charAt(i);
    }
}

class CommaInsSample {
    public static void main( String[] args ) {
        CommaFormat c1 = new CommaFormat( 1234567 );
        CommaFormat c2 = new CommaFormat( -1234567 );
        c1.insComma(); System.out.println( c1.s );
        c2.insComma(); System.out.println( c2.s );
    }
}

(今回のクイズです)
 Java の機能は非常に豊富なので、どんなクラスが使えるかを調べるのに時間がかかるケースも少なくありません。
 今回の例では、たとえば java.text.DecimalFormat のクラスが活用できます。そのクラスを使って書いてみましょう。
   (答えは、次回の Javaの Tips で ・・・)

前回のクイズの答え: 実行結果は次のようになります。(前回の問題を見る
    Aさんメソッドの結果: 1
    Bさんメソッドの結果: 3
Aさんの作ったメソッドの結果は間違っていることが分かります。
Aさんは、値渡しのメソッド内でその引数を書き換えると、元の変数も変わると勘違いしていたようですね。