我有了這個代碼ArrayList.indexOf殺死代碼,但不會崩潰的程序,也不是逮住
public String[][] checkBoxes(String[][] varden){
ArrayList[][] tillatnaSiffror = new ArrayList[9][9];
for(int i=0;i<9;i++){
for(int ruta=0;ruta<9;ruta++){
if(tillatnaSiffror[i][ruta] == null){
tillatnaSiffror[i][ruta] = new ArrayList<Integer>();
for(int add=1;add<=9;add++){
tillatnaSiffror[i][ruta].add(add);
}
}
if(varden[i][ruta].equals("X")){
for(int a=0;a<9;a++){
try {
System.out.println(tillatnaSiffror[i][ruta].indexOf(Integer.parseInt(varden[i][ruta])));
System.out.print("Testing");
} catch(Throwable n){
System.out.print("Throws exception");
}
}
}
}
}
}
tillatnaSiffror[i][ruta]
是包含數字1-9,並且變量一個ArrayList i
和ruta
來自for循環,包裹我的代碼。二維數組varden
包含數字1到9的問題是,不是打印我要找的,它什麼都不做索引的字符串。之後它也不會打印「測試」,也不會因爲例外而被捕獲。我計算了例外的數量。
但是,如果我把零的是這樣的:
System.out.println(tillatnaSiffror[0][0].indexOf(Integer.parseInt(varden[0][0])));
然後打印出來的指數,也是「測試」文本。任何想法,爲什麼它不適用於變量?這不是ArrayIndexOutOfBounds
問題;變量是正確的。
您是否嘗試過通過您的代碼在調試器步進? –
基本上,你的診斷中的某些東西被搞砸了。但很難說沒有任何方法來重現問題。如果你在調試器中運行它並闖入它,會發生什麼?你有沒有嘗試添加一個finally塊來防止異常吞嚥? –
沒有看到*實際的*源代碼,有很多我們可以給予的幫助。 –