Java 如何在不丢失求和后的第一个数字的情况下求和?
我已经完成了一个程序,它反转长和,但由于某种原因,当我尝试反转两个长值的和时,它会删除第一个数字。我使用的第一个数字是123456780000000000,第二个是1234567890。当我进行计算时,总数加起来是1234567891234567890,假设反过来是0987654321987654321。相反,我的程序删除零并返回结果987654321987654321。我的while循环数学关了吗?当你尝试更小的整数时,比如567和456=1023和3201。我认为当零位于任何值的末尾时,它会错误地反转Java 如何在不丢失求和后的第一个数字的情况下求和?,java,math,reverse,long-integer,Java,Math,Reverse,Long Integer,我已经完成了一个程序,它反转长和,但由于某种原因,当我尝试反转两个长值的和时,它会删除第一个数字。我使用的第一个数字是123456780000000000,第二个是1234567890。当我进行计算时,总数加起来是1234567891234567890,假设反过来是0987654321987654321。相反,我的程序删除零并返回结果987654321987654321。我的while循环数学关了吗?当你尝试更小的整数时,比如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();
线程“main”java.lang.RuntimeException中的异常:不可编译
源代码-错误的符号类型:at
Exercise3.main(Exercise3.java:27)
/Users/dgrate321/Library/Caches/NetBeans/8.2/executor-snippets/run.xml:53:
Java返回:1次生成失败(总时间:11秒)
相反,我的程序删除零并返回
987654321987654321. 我的while循环数学关了吗
问题不在于您的代码,您不能使用带前导的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());
}
如果要将0保持在前面,请使用string.use string.formatter在输出到system.Outiteger时,将结果反转数中的任何前导0填充为0。Outiteger没有前导零。没有像
01
这样的整数,它是1
。没有像099
这样的数字,它是99
。