나는 긴 총액을 반전하는 프로그램을 완료했다. 그러나 어떤 이유로 2 개의 긴 값의 합을 역으로하려고 할 때 첫 번째 숫자가 떨어지게된다. 내가 사용하는 첫 번째 숫자는 1234567890000000000이고 두 번째 숫자는 1234567890입니다. 계산을 수행하면 합계가 1234567891234567890에 추가되고 0987654321987654321로 되돌릴 수 있습니다. 대신 내 프로그램이 0을 버리고 987654321987654321의 결과를 반환합니다. 내 while 루프 계산이 꺼져 있습니까? 567과 456 = 1023 같은 더 작은 정수를 시도하면 3201이 뒤집 혔을 것입니다. 제로가 어떤 값의 끝에 오면 역으로 잘못 생각합니다.합계를 역순으로 한 후 첫 번째 숫자를 잃지 않고 long sum을 뒤집는 방법은 무엇입니까?
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을 사용하십시오. –
string.formatter를 사용하여 system.out으로 출력 할 때 결과로 반전 된 숫자의 0을 0으로 채 웁니다. –
정수에는 앞에 오는 0이 없습니다. '01', '1'과 같은 정수는 없습니다. '099', '99'와 같은 숫자는 없습니다. –