gpt4 book ai didi

JAVA BigInteger类错误: BigInteger: modulus not positive

转载 作者:行者123 更新时间:2023-12-01 10:30:53 28 4
gpt4 key购买 nike

我编写了用于获取两个数字之间的 GCD(最大公约数)的代码。因为我应该在第 19 位输入数字,所以我想我需要使用 BigInteger Math 类。但是,在编译代码后,出现此错误。

Exception in thread "main" java.lang.ArithmeticException: BigInteger: modulus not positive at java.math.BigInteger.mod(BigInteger.java:2415) at test.GCD(test.java:9) at test.GCD(test.java:9) at test.GCD(test.java:9) at test.GCD(test.java:9) at test.main(test.java:22)

这是我的代码。

import java.util.*;
import java.math.BigInteger;

public class test {
public static BigInteger GCD(BigInteger a, BigInteger b) {
if (b.equals(0))
return a;
else
return GCD(b, a.mod(b));
}

public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
BigInteger p = BigInteger.valueOf(1);
BigInteger q = BigInteger.valueOf(1);
BigInteger i = BigInteger.ONE;
BigInteger z = BigInteger.ONE;
p = sc.nextBigInteger();
q = sc.nextBigInteger();

while (true) {
if (GCD(p, q).compareTo(i) == -1) {
System.out.print("1");
}
else if(GCD(p, q).compareTo(i) == 0) {
System.out.print("1");
}
else if(GCD(p,q).compareTo(i) == 1) {
break;
}
i.add(z);
}
}
}

没有语法错误。

最佳答案

问题出在基本语句

if (b.equals(0))

它试图将BigInteger b与装箱整数0进行比较,这显然不相等,导致0致命地作为模数传递。你可以使用

if (b.equals(BigInteger.ZERO)) {

关于JAVA BigInteger类错误: BigInteger: modulus not positive,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35104671/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com