2016-05-04 14 views
1

以下は質問です 整数の数字を逆にしたいと思います。整数の逆数

  • 例1:X = 123、321 2
  • 例を返す:-321

マイコードは9桁の数字までのすべてのケースのために働く戻り、X = -123。 10桁の入力の場合、その逆を書きません。私は何をしますか?

私のコードは次のとおり

int reverse1 (int x){ 
     int n = x; 
     int temp = 0; 
     if (n > 0){ 
      while (n > 0){ 
       int a = n % 10; 
       temp = (temp * 10) + a; 
       n = n/10; 
      } 
     } else { 
      while (n < 0){ 
       int a = n % 10; 
       temp = (temp * 10) + a; 
       n = n/10; 
      } 
     } 
     return temp; 
} 
+1

'-123 - > -32'、または' - > -321'を意味しますか? –

+1

あなたのようにテストを続けましたか? '123'、' 1234'、...、 '123456789'、' 1234567890'? '1234567890'の逆は' 0987654321'ではなく '987654321'です。なぜなら数字は先行ゼロを示さないからです。または '1234567899'を試しましたか?逆は' 9987654321'ではないので、 'int'でサポートされている最大値を超えます。要するに、「それは働かない」(または同様の意味の言葉)私達に言わないでください。私たちに教えてください(意味 "ショウ私たち")正確に*どのように*動作しません! – Andreas

答えて

3

10桁の数字(2147483647Integer.MAX_VALUEよりも高くなる可能性がある、またはその逆数がInteger.MAX_VALUEより高くてもよいです。大きい数字をサポートするには、intの代わりにlongを使用できます。

+0

「動作しません」の別の解釈については、[私のコメント](http://stackoverflow.com/questions/37020379/reverse-integer#comment61592327_37020379)を参照してください。 – Andreas