2016-05-04 3 views
1

Folgendes ist die Frage Ich möchte Ziffern einer ganzen Zahl umkehren.Reverse digits of integer

  • Beispiel 1: x = 123, kehrt 321
  • Beispiel 2: x = -123, Rückkehr -321

Mein Code funktioniert für alle Fälle bis zu 9-stellige Nummer. Bei 10-stelligen Eingängen wird nicht umgekehrt geschrieben. Was mache ich?

Mein Code ist:

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

Meinst du '-123 -> -32', oder' -> -321'? –

+1

Haben Sie den Test wie gewohnt fortgesetzt, z. 123, 1234, 123456789, 1234567890? Weil die Umkehrung von 1234567890 nicht "0987654321", sondern "987654321" ist, da Zahlen keine führenden Nullen zeigen. Oder haben Sie '1234567899' versucht, weil das Umgekehrte nicht' 9987654321' ist, da dies den Maximalwert überschreiten würde, der von 'int' unterstützt wird. Kurz gesagt, erzähl uns nicht "es funktioniert nicht" (oder Wörter mit ähnlicher Bedeutung). Sagen Sie uns (genau wie "Zeigen Sie uns") genau * wie * es nicht funktioniert! – Andreas

Antwort

3

Eine 10-stellige Zahl ist wahrscheinlich höher als Integer.MAX_VALUE (2147483647) oder seine umgekehrte Zahl kann als Integer.MAX_VALUE höher sein. Sie können long anstelle von int verwenden, um größere Zahlen zu unterstützen.

+0

Siehe auch [mein Kommentar] (http://stackoverflow.com/questions/37020379/reverse-integer#comment61592327_37020379) für die alternative Interpretation von "funktioniert nicht". – Andreas