Programing

BigInteger 사용법?

c10106 2022. 4. 26. 21:44
반응형

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그것으로 충분하다. int32비트인 반면long64비트로 모든 int 값의 합을 포함할 수 있다.

참조URL: https://stackoverflow.com/questions/1783912/how-to-use-biginteger

반응형