如何在不丢失总和反转后的第一位数字的情况下反转长和?
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-snippets/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());
}
我已经完成了一个反转长和的程序,但出于某种原因,当我尝试反转两个长值的和时,它删除了第一个数字。我使用的第一个数字是 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-snippets/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());
}