4

重複の可能性:
先行ゼロ付きの整数

私がコーディングしているプログラムでは、品目に在庫番号 012345 のラベルを付け、それを int 変数に格納する必要があります。

これは私がやっていることの簡略化された例です:

int test = 012345;
System.out.println(test);

これは次のように出力されます。

5349

5349 ではなく 012345 として印刷するにはどうすればよいですか?

編集:初期化中のカスタムクラスのコンストラクターのパラメーターにこれを入力しています。次に、メソッドを使用して現在の数値を返し、ターミナル ウィンドウに出力します。

4

3 に答える 3

9

整数リテラルの前にゼロを付けると、Javaはその数値を8進数 (つまり基数8)の定数として解釈するため、間違った数値を取得します。先行ゼロを追加する場合は、

int test = 12345;
System.out.println("0"+test);

次のように、フォーマットされた出力機能%06d指定子で使用することもできます。

System.out.format("%06d", num);

6「6桁を使用する」を意味します。「0」は「必要に応じてゼロで埋める」ことを意味します。

于 2012-11-13T04:06:57.103 に答える
0

すでに述べたように、先行ゼロのint値は8進数値と見なされます。intとしてテストする必要がない場合は、文字列にしてみませんか?好き

String test= new String("012345");

また、テストにintを使用する場合は、0を付加するのではなく、印刷時に数値を使用して0を付加するだけです。

先行ゼロをいくつ追加するかをどのように見つけるのか疑問に思っている場合は、次のようにすることができます

int lengthOfItemID=6;
int test=12345;
String test1=new String("000000"+test);
System.out.println(test1.substring(test1.length()-lengthOfItemID));

構文エラーを許してください。私が最後にJavaを使って働いたのは何年も前のことです。

于 2012-11-13T04:12:39.943 に答える
-1

を使用すると、正しい結果を得ることができますInteger.parseInt。これにより、文字列が10進文字列になります。(ここにあります)。ここでのJAVAAPIは、文字列を受け取り、符号付き10進数を返すと述べています。

于 2012-11-13T04:08:17.973 に答える