我正在做一些在線編碼項目,試圖學習編程和提高我的技能。當前項目的目標是找出二進制數字,其中第一個數字與第二個數字匹配。我可能沒有正確解釋。二進制字符串 - 大數字錯誤.StringIndexOutOfBounds
例如,如果我有我的二進制字符串爲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)
你的調試器告訴你什麼?錯誤發生在第2個循環之前還是之後? – usr2564301