java - 是什么导致了这个 ArrayIndexOutOfBoundsException?

标签 java android indexoutofboundsexception

我正在为 Android 制作一款数独游戏,但遇到了问题。游戏可以编译,但是一旦进入游戏屏幕并按下按钮,游戏就会崩溃。

我检查了 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);

最佳答案

只是猜测 - 数组索引是基于的。如果您需要 9 个按钮,就可以了

Button[] buttons = new Button[9];

创建数组并

button = findViewById(R.id.button);
buttons[0] = findViewById(R.id.button_1);
buttons[1] = findViewById(R.id.button_2);
buttons[2] = findViewById(R.id.button_3);
buttons[3] = findViewById(R.id.button_4);
buttons[4] = findViewById(R.id.button_5);
buttons[5] = findViewById(R.id.button_6);
buttons[6] = findViewById(R.id.button_7);
buttons[7] = findViewById(R.id.button_8);
buttons[8] = findViewById(R.id.button_9);

来填充它。在我的示例中寻址 buttons[9] 肯定会创建 ArrayIndexOutOfBoundsException

关于java - 是什么导致了这个 ArrayIndexOutOfBoundsException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5881162/

相关文章:

java - b[i]=新按钮(月[i]);我可以像这样将变量传递给 java 中的 Button 构造函数吗?

java - 当索引确实在边界内时出现 IndexOutOfBounds 异常

java - 我需要做什么才能使用 Guice?

java - 执行jar错误无法找到或加载主类

java - 如何将 URL 中的图像保存到内部或外部存储中?

android2.3 下载管理器

java - 如何将 String ArrayList 更改为 Double ArrayList?

java - 用于创建模拟器的软件设计模式

java - 如何检索 RecyclerView 位置

android - Liveview 在 Appcelerator Studio 的合金项目中不起作用(在经典项目中工作正常)