日本語表示のアプレットを作っていると、数値を「全角」(というか他の文字と同じ大きさのユニコード表記)で表示したい事があります。ただ、数値を文字列に変換する関数(String.valueOfなど)では半角になってしまうので自分で作ってみる事にしましょう。
ユニコード変換プログラムの吐き出すソースを見てみると、数字の0ー9はユニコードではff10からff19になっているようです。という事は、Javaではユニコードをシーケンス\uxxxxで表すので一桁の数値(0ー9)をユニコードにする処理は以下のようになるでしょう。
String decToStr(int v) { // 一桁の数値をユニコードの数字1文字に String str=new String(); switch (v) { case 0: str="\uff10"; break; case 1: str="\uff11"; break; case 2: str="\uff12"; break; case 3: str="\uff13"; break; case 4: str="\uff14"; break; case 5: str="\uff15"; break; case 6: str="\uff16"; break; case 7: str="\uff17"; break; case 8: str="\uff18"; break; case 9: str="\uff19"; break; } return str; // 結果を返す }
数字一桁の処理ができたら、後は1桁づつ処理する方法を考えましょう。方針としては、最下位から一桁づつ数字にして行く事にします。まず、数値を10進表記した時の「最下位」の一桁を得るためには、「10で割った余り」を求めれば良いですね。そして、最下位一桁を「切り捨てる」には10で割る(そして整数部分のみを残す)、と。処理の流れをまとめると以下のようになります
ただし、こうして得られた文字列は最下位から順に文字列に加えられていくので、左右逆になっています。ですから
4 文字列の左右を反転させる
という処理も必要です。さらに、マイナスの数値に対しては絶対値を文字列化して最初に「−」を付ければ良いでしょう。
以上の事をまとめると、文字列変換関数は以下のようになりました。一桁の数字変換には、上のdecToStrを使います。
String intToStr(int v) { // 数値をユニコードの数字化 int a,i,w; String str,strw; strw=new String(); if (v==0) return decToStr(v); else if (v<0) { str=new String("−"); a=-v; } else { str=new String(); a=v; } while (a>0) { // 一桁づつ数字化 strw+=decToStr(a % 10); a=a/10; } for (i=strw.length()-1;i>-1;i--) // 文字列を左右反転 str+=strw.substring(i,i+1); return str; }
左側のテキストボックスに数値を入れて「ユニコード化」ボタンをクリックしてください。入力された数値が右側(矢印の先)のテキストボックスに、ユニコードの文字列として表示されます。