gpt4 book ai didi

java - 二进制到字符串 - 大数错误 .StringIndexOutOfBounds

转载 作者:行者123 更新时间:2023-11-30 07:09:33 25 4
gpt4 key购买 nike

我正在做一些在线编码项目,试图学习编程并提高我的技能。当前项目的目标是首先找出二进制中哪个以 2 为基数的数字与另一个数字匹配。我可能没有正确解释这一点。

例如,如果我的二进制字符串为 10010 和 10011,则答案将为 2,但如果我的二进制字符串为 11111 和 10000,则答案将为 16。下面的代码适用于它运行的前 4 个测试,但在第五个测试,它抛出一个 .StringIndexOutOfBounds - 传递给我的方法的最后一个测试的样本数据是 n = 1073741824 & m = 1006895103。我假设这可能是关于 charAt() 的大小或限制的问题,但不太确定。 .. 任何建议将不胜感激。代码如下:

int equalPairOfBits(int n, int m) {
String theN = Integer.toBinaryString(n);
String theM = Integer.toBinaryString(m);
int pos = 0;
int nLen = theN.length();
int mLen = theN.length();
char[] nArray = new char[nLen];
char[] mArray = new char[mLen];

for(int i = nLen - 1; i > -1; i--){
nArray[i] = theN.charAt(i);
}
for(int i = mLen - 1; i > -1; i--){
mArray[i] = theM.charAt(i);
}
boolean isSame = false;
for(int i = nLen - 1; i > -1; i--){
if(nArray[i] == mArray[i] && isSame == false)
{
pos = i;
isSame = true;
}

}
pos = nLen - pos;
int mult = 1;
for(int i = 1; i < pos; i++){
if(pos == 0)
mult = 1;
else
mult = mult * 2;
}
return mult;
}

我遇到的错误:

Exception in thread "main" java.lang.AssertionError: java.lang.reflect.InvocationTargetException
at myCode._invoke(file.java on line ?)
at myCode.main(file.java on line ?)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at myCode._invoke(file.java on line ?)
... 1 more
Caused by: java.lang.ArrayIndexOutOfBoundsException: 30
at _runppnqw.equalPairOfBits(file.java on line 18)

最佳答案

你的问题就在这里


int mLen = theN.length();
应该使用theM

如果theM字符串的长度小于theN,当您迭代超过theM字符串的长度时,您将得到索引越界异常

关于java - 二进制到字符串 - 大数错误 .StringIndexOutOfBounds,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39439846/

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