プロが教える店舗&オフィスのセキュリティ対策術

下のプログラムでなぜString ss= " "+dt;のように数値を文字列に変換しないとだめなんでしょうか?
ちなみに桁数設定メソッドを作るプログラムです。

public class JcWidth { // JcWidth.java [java]
public static void main(String args[]) {
System.out.println(":" + toIntWidth(123, 8) + ":");
System.out.println(":" + toIntWidth(12345, 8) + ":");
System.out.println(":" + toIntWidth(-1234567890, 8) + ":");
System.out.println(":" + toHexWidth(4095, 8) + ":");
System.out.println(":" + toHexWidth(123456789, 8) + ":");
}

// int値dtを先行空白付きw桁(最大12)の表現にする
// 数値が指定幅より大きいときは必要な幅にする
public static String toIntWidth(int dt, int w) {
if (w > 12) w = 12;
String ss = "" + dt; // 数値を文字列にする
if (ss.length() > w) w = ss.length();
ss = " " + dt;
return ss.substring(ss.length()-w);
}

// int値dtを先行0付きw桁(最大8)の16進数大文字表現にする
public static String toHexWidth(int dt, int w) {
if (w > 8) w = 8;
String ss = Integer.toHexString(dt).toUpperCase();
if (ss.length() > w) w = ss.length();
ss = "0000000" + ss;
return ss.substring(ss.length()-w);
}
}

A 回答 (1件)

数字が何文字使うか調べるために、


一旦、文字列にした方が早いと思ったのでしょう。

このプログラムでは
"*****1000000"
"***100000000"(*は空白を表す)
のように、空白を付けて数値を表したいわけですね。
数字が「何桁の数になるか」は、計算すれば出ますが、
それより単純に、文字列の形にしてその長さを数えたわけです。

蛇足ですが、このプログラムをちょっと見たところでは
>String ss = "" + dt; // 数値を文字列にする
>if (ss.length() > w) w = ss.length();
>ss = " " + dt;
のあたり、もう少しすっきり書けるような気がします。
    • good
    • 0
この回答へのお礼

お返事ありがとうございます!
なるほど、そういうことでしたか。
よく数値を文字列にするプログラミングを見るのですが、そういう側面があったのですね。
ありがとうございました。

お礼日時:2003/11/08 21:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!