如何在不丢失总和反转后的第一位数字的情况下反转长和?

How to reverse a long sum without losing the first digit after the sum reverse?

我已经完成了一个反转长和的程序,但出于某种原因,当我尝试反转两个长值的和时,它删除了第一个数字。我使用的第一个数字是 1234567890000000000,第二个是 1234567890。当我进行计算时,总数加到 1234567891234567890 并假设反转为 0987654321987654321。相反,我的程序删除了零和 return 9876545s432816 的结果数学关闭?当您尝试较小的整数,如 567 和 456 = 1023 反转 3201 时。我认为当零位于任何值的末尾时,它会错误地反转。

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);

     } 

}

编辑

尝试下面的代码后,出现编译错误:

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-snippe‌​ts/run.xml:53: Java returned: 1 BUILD FAILED (total time: 11 seconds)

Instead my program drops the zero and return a result of 987654321987654321. Is my while loop math off?

问题不在于您的代码,您根本无法使用带前导 0 的整数值。如果你想保持领先 0 你需要将它存储为一个字符串。

StringBuilder reverseSum = new StringBuilder(Long.toString(sum));
System.out.println("The reversed sum is " + reverseSum.reverse());

如果您想要 StringBuilder 作为字符串:

String tempValue = reverseSum.toString();

编辑

这里是完成手头任务的完整代码:

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;

    StringBuilder reverseSum = new StringBuilder(Long.toString(sum));
    System.out.println("The reversed sum is " + reverseSum.reverse());
}