BigInteger 사용법?
코드 조각이 있는데 작동하지 않는다.
BigInteger sum = BigInteger.valueOf(0);
for(int i = 2; i < 5000; i++) {
if (isPrim(i)) {
sum.add(BigInteger.valueOf(i));
}
}
합계 변수는 항상 0이다.내가 뭘 잘못하고 있는 거지?
BigInteger
불변이다자바도크는 () "[r]이(이 + val)의 가치가 있는 BigInteger를 추가한다고 명시하고 있다.그러므로 바꿀 수 없다.sum
에 대한 결과를 재할당해야 한다.add
에 대한 방법.sum
가변의
sum = sum.add(BigInteger.valueOf(i));
sum = sum.add(BigInteger.valueOf(i))
그BigInteger
클래스는 불변이므로 클래스의 상태를 변경할 수 없다.그래서 "추가"라고 부르는 것은 새로운 것을 만든다.BigInteger
전류를 수정하는 것보다.
다른 답변들은 그것을 못박았다; BigInteger는 불변이다.여기 그 코드를 작동시키기 위한 사소한 변화가 있다.
BigInteger sum = BigInteger.valueOf(0);
for(int i = 2; i < 5000; i++) {
if (isPrim(i)) {
sum = sum.add(BigInteger.valueOf(i));
}
}
BigInteger는 불변의 계급이다.따라서 산술을 할 때마다 출력을 변수에 재할당해야 한다.
java.math.BigInteger
불변 클래스로, 이미 할당된 객체의 위치에 새 객체를 할당할 수 없다.그러나 다음과 같은 새 값을 할당하기 위해 새 개체를 만들 수 있다.
sum = sum.add(BigInteger.valueOf(i));
그래 불변이다.
sum.add(BigInteger.valueOf(i));
따라서 BigInteger 클래스의 method add()는 새로운 BigIntger 값을 자신의 값에 추가하지 않고, 현재의 BigInteger를 변경하지 않고 새로운 BigInteger 참조를 생성하고 반환하며, 이는 String의 경우에도 수행된 것이다.
사실 당신은 사용할 수 있다.
BigInteger sum= new BigInteger("12345");
BigInteger 클래스에 대한 개체 생성용.하지만 여기서 문제는 네가 큰따옴표에서 변수를 줄 수 없다는 것이다.그래서 우리는 valueOf() 방법을 사용해야 하고 그 답은 다시 그 합계에 저장해야 한다.그래서 우리는 글을 쓸 것이다.
sum= sum.add(BigInteger.valueOf(i));
Biginteger
불변의 계급이다.다음과 같은 합계에 출력 값을 명시적으로 할당하십시오.
sum = sum.add(BigInteger.valueof(i));
int 값을 몇 개 합쳐서 계산하기 때문에 BigInteger를 사용할 필요가 없다. long
그것으로 충분하다. int
32비트인 반면long
64비트로 모든 int 값의 합을 포함할 수 있다.
참조URL: https://stackoverflow.com/questions/1783912/how-to-use-biginteger
'Programing' 카테고리의 다른 글
ncurs 없이 C/C+++에서 vim, htop, ...와 같은 "실제" 대화형 터미널 프로그램 작성 (0) | 2022.04.27 |
---|---|
더 나은 접근 방식 처리: 'vuex 저장소 상태를 돌연변이 처리기 외부에서 변경하지 않음' 오류 (0) | 2022.04.27 |
Vue.set - TypeScript로 추론된 잘못된 유형 (0) | 2022.04.26 |
Vue 2 사용자 지정 선택2: @put이 작동하는 동안 @change가 작동하지 않는 이유 (0) | 2022.04.26 |
'내보내기 기본값' 외부의 구성 요소에서 VueJS 메서드를 호출하십시오. (0) | 2022.04.26 |