我正在爲Android做一個數獨遊戲,但我遇到了問題。遊戲編譯,但一旦你到達遊戲屏幕並按下按鈕,遊戲就會崩潰。導致此ArrayIndexOutOfBoundsException的原因是什麼?
我檢查了logcat的這些似乎是錯誤的:
05-04 09:07:41.620: ERROR/AndroidRuntime(325): FATAL EXCEPTION: main
05-04 09:07:41.620: ERROR/AndroidRuntime(325): java.lang.ArrayIndexOutOfBoundsException
05-04 09:07:41.620: ERROR/AndroidRuntime(325): at org.example.fpsudoku.Button.findScreenV(Button.java:59)
05-04 09:07:41.620: ERROR/AndroidRuntime(325): at org.example.fpsudoku.Button.onCreate(Button.java:38)
05-04 09:07:41.620: ERROR/AndroidRuntime(325): at android.app.Dialog.dispatchOnCreate(Dialog.java:307)
05-04 09:07:41.620: ERROR/AndroidRuntime(325): at android.app.Dialog.show(Dialog.java:225)
05-04 09:07:41.620: ERROR/AndroidRuntime(325): at org.example.fpsudoku.Game.showButtonOrError(Game.java:181)
05-04 09:07:41.620: ERROR/AndroidRuntime(325): at org.example.fpsudoku.SudokuScreen.onTouchEvent(SudokuScreen.java:221)
05-04 09:07:41.620: ERROR/AndroidRuntime(325): at android.view.View.dispatchTouchEvent(View.java:3766)
,這是似乎是問題的代碼:
findScreenV();
for (int element : usesquare)
{
if (element != 0)
buttons[element - 1].setVisibility(View.INVISIBLE);
}
setListeners();
}
private void findScreenV()
{
button = findViewById(R.id.button);
buttons[1] = findViewById(R.id.button_1);
buttons[2] = findViewById(R.id.button_2);
buttons[3] = findViewById(R.id.button_3);
buttons[4] = findViewById(R.id.button_4);
buttons[5] = findViewById(R.id.button_5);
buttons[6] = findViewById(R.id.button_6);
buttons[7] = findViewById(R.id.button_7);
buttons[8] = findViewById(R.id.button_8);
buttons[9] = findViewById(R.id.button_9);
我們錯過了兩件重要的事情 - 按鈕陣列的大小和usequare的大小是什麼? – MByD 2011-05-04 09:19:19