1. Convertir un entier int en chaîne, capture de débordement
class Solution { public int reverse(int x) { long nums = 0; int temp = 1; try { temp = x / Math.abs(x); StringBuilder num = new StringBuilder(); num.append(Math.abs(x)); nums = Long.parseLong(num.reverse().toString()); if(nums > Math.pow(2, 31) - 1) { return 0; } } catch (Exception e) { // TODO: handle exception return 0; } return (int)nums*temp; } }
La conversion de chaîne est moins efficace et utilise plus de fonctions de bibliothèque.
(Tutoriel vidéo d'apprentissage recommandé : Tutoriel vidéo Java)
2 Méthode restante
class Solution { public int reverse(int x) { int ans = 0; while(x != 0) { // 判断溢出 if((ans * 10) / 10 != ans) { ans = 0; break; } // ans*10 没有溢出 ans = ans * 10 + x % 10; x /= 10; } return ans; } }
(ans * 10) / 10 dont ans *. 10, la machine virtuelle Java effectue en fait une promotion de type numérique en interne, c'est-à-dire qu'en cas de débordement, les données de type long sont temporairement stockées, et finalement par conversion restrictive, la valeur inférieure à 32 chiffres est conservée pour obtenir (ans * 10) / 10 ! = ans. Par conséquent, la condition consistant à stocker uniquement des entiers de 32 bits ne peut pas être remplie.
Articles et tutoriels connexes recommandés : Tutoriel d'introduction à Java
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!