我正在编写一个代码,该代码确定最小的整数,该整数是由7组成的序列,后跟一些可以被int n
整除的零(可能是零)。例如0, 7, 777, 7700, 777770, 70000000
。由于此数字可能很大,因此返回值应为BigInteger
。
到目前为止,我的代码有一个if-else阶梯,它涵盖了以下情况:如果int n
不能被2或5整除,则保证仅包含7(无零)。在int n
不能被二或五整除的情况下,我的思维过程是在while循环中继续将七个添加到LinkedList中,直到该列表(转换为BigInteger)被int n
整除。对于int n
可被二或五整除的情况,使用相同的逻辑,除了两个for循环会在列表中添加七和零。
我的代码在将列表转换为字符串然后转换为BigInteger
时遇到了运行时错误,特别是在BigInteger numBig = new BigInteger(str);
行上。错误是:“ java.lang.NumberFormatException:零长度BigInteger(在java.math.BigInteger中)”另外,对于int n
可被二或五整除的情况,我不太确定逻辑是否正确。 >
到目前为止,这是我的代码:
public static BigInteger method(int n)
{
LinkedList<Integer> res = new LinkedList<Integer>();
BigInteger num = BigInteger.valueOf(n);
BigInteger two = new BigInteger("2");
BigInteger five = new BigInteger("5");
String temp = Integer.toString(n);
int size = temp.length();
if (n == 0)
{
return BigInteger.valueOf(0);
}
if (num.remainder(two).equals(BigInteger.ZERO) == true ||
num.remainder(five).equals(BigInteger.ZERO) == true)
{
while (convert(res).remainder(num).equals(BigInteger.ZERO) == false)
{
for (int i = 0; i > size; i++)
{
res.add(7);
for (int j = 0; j > size; j++)
{
res.add(0);
}
}
}
}
else
{
while (convert(res).remainder(num).equals(BigInteger.ZERO) == false)
{
res.add(7);
}
return convert(res);
}
return convert(res);
}
private static BigInteger convert(List<Integer> res)
{
String str = new String();
for (int i : res)
{
str = str + i;
}
BigInteger numBig = new BigInteger(str);
return numBig;
}
我正在编写一个代码,该代码确定最小的整数,该整数是由7组成的序列,后跟一些可以被int n整除的零(可能是零)。例如0,7,777,7700,777770,70000000。...
“零长度BigInteger”表示您正在尝试从长度为0的对象创建BigInteger。堆栈跟踪会告诉您确切在哪一行。