600851475143에 대한 "정수 숫자가 너무 큽니다"오류 메시지
public class Three {
public static void main(String[] args) {
Three obj = new Three();
obj.function(600851475143);
}
private Long function(long i) {
Stack<Long> stack = new Stack<Long>();
for (long j = 2; j <= i; j++) {
if (i % j == 0) {
stack.push(j);
}
}
return stack.pop();
}
}
위의 코드가 실행되면 줄에 오류가 발생합니다 obj.function(600851475143);
. 왜?
600851475143
32 비트 정수 (유형 int
) 로 표현할 수 없습니다 . 64 비트 정수 (유형 long
) 로 나타낼 수 있습니다 . Java의 긴 리터럴은 "L"로 끝납니다.600851475143L
접미사 추가 L
: 23423429L
.
기본적으로 java는 모든 숫자 리터럴을 32 비트 정수 값으로 해석합니다. 32 비트 정수보다 더 큰 L
값 을 명시 적으로 지정하려면 long 값에 접미사 를 사용해야 합니다.
긴 리터럴을 사용해야합니다.
obj.function(600851475143l); // note the "l" at the end
하지만 그 함수가 메모리 (또는 시간) 부족할 것으로 예상합니다.
Java 컴파일러는 600851475143을 기본적으로 int 유형의 상수 값으로 해석하려고합니다. 600851475143은 int로 표현할 수 없기 때문에 오류가 발생합니다.
긴 숫자 인터 프리트를 원한다는 것을 컴파일러에 알리려면 그 중 하나 l
또는 L
뒤에 추가해야 합니다. 그러면 번호가 다음과 같이 표시 600851475143L
됩니다.
일부 글꼴은 "1"과 소문자 "l"을 구분하기 어렵 기 때문에 항상 대문자 "L"을 사용해야합니다.
정수 리터럴 600851475143을 나타내려면 40 비트가 필요합니다. Java에서 최대 정수 값은 2 ^ 31-1입니다 (즉, 정수는 32 비트입니다. http://download.oracle.com/javase/1.4.2/docs 참조). /api/java/lang/Integer.html ).
이것은 function
. 대신 긴 정수 리터럴을 사용해보십시오 (다른 답변에서 제안한대로).
컴파일 시간에 숫자 "600851475143"은 32 비트 정수로 표시됩니다. 대신 숫자 끝에 긴 리터럴을 사용하여이 문제를 해결하십시오.
다른 모든 답변과 별도로 할 수있는 작업은 다음과 같습니다.
long l = Long.parseLong("600851475143");
예 :
obj.function(Long.parseLong("600851475143"));
또는 입력 번호를 길게 선언 한 다음 코드 tango : D ...
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("Enter a number");
long n = in.nextLong();
for (long i = 2; i <= n; i++) {
while (n % i == 0) {
System.out.print(", " + i);
n /= i;
}
}
}
참고 URL : https://stackoverflow.com/questions/3757763/integer-number-too-large-error-message-for-600851475143
'IT TIP' 카테고리의 다른 글
phpmyadmin에서 대용량 SQL 파일을 가져 오는 방법 (0) | 2020.10.27 |
---|---|
LIKE를 사용한 Spring JPA @Query (0) | 2020.10.27 |
Android 선형 레이아웃-요소를 하단에 유지하는 방법? (0) | 2020.10.27 |
iOS7에서 UISearchBar의 배경색을 변경하는 방법 (0) | 2020.10.27 |
역 색인이있는 부분 문자열 (0) | 2020.10.27 |