我已經完成了一個反轉長整數的程序,但由於某種原因,當我試圖扭轉兩個長整數值的總和時,它會丟棄第一個數字。我用的第一個數字是1234567890000000000和第二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();
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)
如果您想保留0,請使用字符串。 –
使用string.formatter將0輸出到system.out時產生的反向數字中的任何前導0 0 –
整數不包含前導零。沒有像'01'這樣的整數,它是'1'。沒有'099'這個數字,它是'99'。 –