2016-06-25 9 views
-2

算術加算演算を実行していますが、値がまったくなくても演算中に一番左の0の全時間を保持したいと考えています。今計算中に左に0を保持する

まで

私の仕事私はlong変数long a = 03338023709を持っています。

私がしたときa + 1; 3338023710です。

0は全く価値がありませんが、私は03338023710ない3338023710ようにそれを維持したいと

を引き起こすたかったのです。

これを達成する方法を教えてください。

+2

ところで '0'で始まる番号は、コンパイラによって進整数として解釈されます:あなたは、コードを使用することができ、あなたの希望する長さを含むstringLengthと呼ばれる変数を持っていると仮定。 'long a = 03338023709'はコンパイルされません。 'long a = 3338023709L'を使用して、@Arpanが示唆するように出力をフォーマットします。 – Arjan

+0

-1を与える人は誰ですか?私の質問はあなたに奇妙に見えますか? –

+0

downvoteボタンのツールチップテキストは* "この質問は研究努力を示していません;それは不明または役に立たない" *。そのうちの1つ、おそらく。既に半分ダース同様の質問をもたらす["一番左の0 javaを維持する](https://www.google.com/search?q=keep+the+leftmost+0+java)の簡単なgoogle検索などの努力あなたの質問はそれほど有用ではありません。あなたが十分な文脈を提供しなかったか、または提供された文脈が現実的でないためにおそらく不明瞭です。あなたは本当に番号がどのように格納されているか、または出力がどのように見えるかだけ気にしますか?または上記のすべて。誰が知っています:) – Arjan

答えて

0

結果を印刷しているとします。それ以外の場合は、先行ゼロを維持しても意味がありません。その場合

、あなたはこれを行うことができます:

long a = 03338023709; 
a = a + 1; 
String string = valueOf(a); 
string = "0" + string; 

をし、それをプリントアウトしたり、あなたがのためにそれを必要とするものは何でもするために文字列を使用します。

+0

私はこの解決策を考えていました。それ以上のものはありますか? –

+0

「良いもの」とは何を意味するのか分かりません。これを印刷するためだけに使用すると、これは最も速く最も安全な方法です。そして、私は長く033番の番号を記憶できないと思います...それは33番にフォーマットされます。 – leonz

+0

実際、 'long a = 03338023709'や' long a = 03338023709L'は、コンパイル時にエラー(整数が大きすぎます)となるのは、それを8進整数と解釈するためです。答えのコードはコンパイルされません。 – Arjan

3

Formatterも使用できます。

String.format("%011d", a+1); 
03338023710 

これは、全長を11文字(この場合は1を加算する)にするために、十分に左側に0を埋め込みます。

そうでない場合は、各番号の左に、単一のゼロを追加するために、あなたは11

+0

これは、この方法の「長さ」や大きさをこのように修正することができるため、ホイールを再発明することなく、数字に「0」を加えるよりも優れています – Machinarius

-1

の代わりに、数の長さプラス1を置くことができ、私はあなたので、先行ゼロを維持したいと仮定あなたの価値をStringに変換したい(そうでない場合は意味がありません)。 簡単な解決策は、最初に値を通常通り(たとえばInteger.toString(a))に変換して、Stringが必要なだけ長くなるまで先行ゼロを追加することです。

String s = Integer.toString(a); 
while(s.length() < stringLength){ 
    s = "0" + s; 
} 
関連する問題