J'ai terminé un programme où il inverse la somme longue, mais pour une raison quelconque, lorsque j'essaie d'inverser la somme de deux valeurs longues, il laisse tomber le premier nombre. Le premier nombre que j'utilise est 1234567890000000000 et le second 1234567890. Quand je fais les calculs, le total ajoute à 1234567891234567890 et suppose de revenir à 0987654321987654321. Au lieu de cela, mon programme abandonne le zéro et renvoie un résultat de 987654321987654321. Est-ce que ma boucle mathématique est désactivée? Lorsque vous essayez des entiers plus petits comme 567 et 456 = 1023 inversé 3201. Je pense que quand un zéro est à la fin de n'importe quelle valeur il s'inverse incorrectement.Comment inverser une somme longue sans perdre le premier chiffre après la somme inverse?
import java.math.*;
import java.util.Scanner;
import java.lang.*;
public class Exercise3
{
public static void main(String args[])
{
Scanner sc = new Scanner(System.in);
System.out.println("Enter first number: ");
long n1 = sc.nextLong();
System.out.println("Enter second number: ");
long n2 = sc.nextLong();
long sum = n1+n2;
long reverseSum = 0;
long rem;
while(sum != 0)
{
rem = sum % 10;
reverseSum = reverseSum * 10 + rem;
sum = sum/10;
}
System.out.println("The reversed sum is " + reverseSum);
}
}
EDIT
après avoir essayé le code ci-dessous, je reçois une erreur de compilation:
StringBuilder reverseSum = new StringBuilder(sum);
System.out.println("The reversed sum is " + reverseSum.reverse());
String tempValue = reverseSum.toString();
Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - Erroneous sym type: at Exercise3.main(Exercise3.java:27) /Users/dgrate321/Library/Caches/NetBeans/8.2/executor-snippets/run.xml:53: Java returned: 1 BUILD FAILED (total time: 11 seconds)
Si vous souhaitez conserver les 0 à l'avant, utilisez une chaîne. –
utilisez un string.formatter à 0 en tapant tous les 0 principaux dans votre numéro inversé résultant lorsque vous l'affichez dans system.out –
Les entiers ne comportent pas de zéros en tête. Il n'y a pas de nombre entier comme '01', c'est' 1'. Il n'y a pas de numéro tel que «099», c'est «99». –