
下のプログラムでなぜ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);
}
}
No.1ベストアンサー
- 回答日時:
数字が何文字使うか調べるために、
一旦、文字列にした方が早いと思ったのでしょう。
このプログラムでは
"*****1000000"
"***100000000"(*は空白を表す)
のように、空白を付けて数値を表したいわけですね。
数字が「何桁の数になるか」は、計算すれば出ますが、
それより単純に、文字列の形にしてその長さを数えたわけです。
蛇足ですが、このプログラムをちょっと見たところでは
>String ss = "" + dt; // 数値を文字列にする
>if (ss.length() > w) w = ss.length();
>ss = " " + dt;
のあたり、もう少しすっきり書けるような気がします。
お返事ありがとうございます!
なるほど、そういうことでしたか。
よく数値を文字列にするプログラミングを見るのですが、そういう側面があったのですね。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# 大量のデータを読み込んで表示する速度を改善したい 8 2023/05/07 13:29
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- Java Java プログラム public class Main { public static void 3 2023/08/10 23:46
- C言語・C++・C# C# DatagridviewにExcelシートを反映するとエラーが出る 2 2023/05/06 17:12
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
- Java 直し方について教えて頂きたいです。 4 2022/08/13 02:11
- Visual Basic(VBA) Excel VBAでAA(BBB) → BBB.AA に置換したい 2 2022/10/30 13:59
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ループ処理の際、最後だけ","を...
-
要素数が10の配列で、乱数0~9...
-
配列を逆順させて表示させる方...
-
数値⇒漢数字変換 java
-
数値を文字列に変換する?
-
論理演算子”||”またはの入力方法
-
for文を使った累乗の計算方法に...
-
Java 入力した整数値の合計を、...
-
どんな条件式を使えばいいですか?
-
C#の質問
-
Java、2の0乗~10乗の表示
-
JAVAのfor文で困っています。
-
countに実行した回数をいれたい...
-
コマンドライン引数の例外処理...
-
リトルエンディアン→ビッグエン...
-
2つのスクロールバーを連動させ...
-
7つ数字を表示したら改行すると...
-
JSPやサーブレットでSystem.out...
-
InputStreamはreadが1回しかで...
-
イメージボタンを作成したいの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ループ処理の際、最後だけ","を...
-
論理演算子”||”またはの入力方法
-
数値⇒漢数字変換 java
-
java キーボード入力された値の...
-
Randomメソッドの確率設定
-
テキストボックスに入力された...
-
続・ZZZ,ZZZ,ZZ9形式の金額形式...
-
7つ数字を表示したら改行すると...
-
countに実行した回数をいれたい...
-
JAVAのfor文で困っています。
-
(急いでいます)Javaで3回間違...
-
Java 入力した整数値の合計を、...
-
Java、2の0乗~10乗の表示
-
点数をだす時に、maxとminがお...
-
javaです。 途中まで出来ている...
-
Ctrl+Zが入力されると終了する...
-
配列を逆順させて表示させる方...
-
Java 配列 勝敗、引き分け判定...
-
繰り返しによる星印の出力
-
javaプログラムについて
おすすめ情報