Pour inverser un entier et le mettre dans une liste, on pourrait faire ce qui suit (où x est un entier):Quelqu'un peut-il expliquer comment inverser un entier en utilisant% 10 fonctionne?
int lastDigit = x;
while(lastDigit != 0)
{
list.add(lastDigit % 10);
lastDigit /= 10;
}
Donc, si x est 502, 2 0 et 5 obtiendriez ajoutés à la liste.
Ceci est évidemment très utile, mais jusqu'à hier, je pensais que la seule façon de faire quelque chose comme ça était de convertir l'int en une chaîne en premier.
Je ne suis pas sûr si ce n'est que la connaissance commune, mais je n'avais pas vu cette méthode avant aujourd'hui. Je voudrais comprendre comment cela fonctionne au lieu de simplement le mémoriser.
Quelqu'un pourrait-il expliquer pourquoi le module de nombre 10 donne le dernier chiffre, et pourquoi le diviser par 10 donne le prochain chiffre de l'itération suivante? Pourquoi serait-il finalement égal à 0?
Faites-le à la main pour quelques chiffres. Cela devrait être assez instructif! –
Ceci est juste de l'arithmétique de base. L'opérateur de module vous donne le reste qui serait obtenu dans un calcul de division, donc 502% 10 est 2 parce que 502/10 = 50 plus un reste de 2. La division par dix dans la ligne suivante est effectuée en utilisant l'arithmétique entière, donc 502/10 donne un résultat de 50. Et tout nombre non négatif inférieur à 10 donnera un résultat de zéro, terminant la boucle –
Vous devriez lire à propos de la fonction 'mod' et de son utilisation. Si vous prenez 'mod' d'un nombre avec' 10' il renvoie le chiffre de l'unité comme le reste. Ici, vous coupez les chiffres de l'unité en prenant 'mod' et en divisant le nombre par' 10'. – user2004685