当前位置: 首页 > 知识库问答 >
问题:

ArrayIndexOutOfBoundsException:长度=5;指数=5

万勇
2023-03-14

原因:java.lang.ArrayIndexOutOfBoundsException:length=5;在com.example.android.architecture.mainactivity.updateDisplay(mainactivity.kt:59)在com.example.android.architecture.mainactivity.oncreate(mainactivity.kt:44)

更改索引和类视图

class MainActivity : AppCompatActivity() {

    private lateinit var dice: IntArray
    private lateinit var headlineText: String

    private val imageViews by lazy {
        arrayOf<ImageView>(findViewById(R.id.die1),
        findViewById(R.id.die1),
        findViewById(R.id.die2),
        findViewById(R.id.die3),
        findViewById(R.id.die4),
            findViewById(R.id.die5)
        )
    }
        private val headline by lazy { findViewById<TextView>(R.id.headline) }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        setSupportActionBar(toolbar)

        headlineText = savedInstanceState?.getString(HEADLINE_TEXT)
            ?: getString(R.string.welcome)
        dice = savedInstanceState?.getIntArray(DICE_COLLECTION)
            ?: intArrayOf(6,6,6,6,6)

        lifecycle.addObserver(MyLifeCycleObserver())

        fab.setOnClickListener{
            fabClickHandler()}

        updateDisplay()

    }


    private fun fabClickHandler(){
        dice = DiceHelper.rollDice()
        headlineText = DiceHelper.evaluateDice(this,dice)
        updateDisplay()

    }

    private fun updateDisplay() {
        for (i in 0 until imageViews.size) {

            val drawableId = when (dice[i]) {
                1 -> R.drawable.die_1
                2 -> R.drawable.die_2
                3 -> R.drawable.die_3
                4 -> R.drawable.die_4
                5 -> R.drawable.die_5
                6 -> R.drawable.die_6
                else -> R.drawable.die_6
            }
            imageViews[i].setImageResource(drawableId)
        }
        headline.text = headlineText
    }

    override fun onSaveInstanceState(outState: Bundle?) {
        outState?.putString(HEADLINE_TEXT,headlineText)
        outState?.putIntArray(DICE_COLLECTION,dice)
        super.onSaveInstanceState(outState)
    }
}

我不知道为什么我的android应用程序没有运行

共有1个答案

夏侯野
2023-03-14

dice的大小为5,其中ImageViews有6个元素,因此循环运行6次,在第六次迭代中出现异常

 类似资料:
  • 这个错误开始突然出现,当我登录到我的应用程序(通过firebase)时,它必须显示一个列表,然而,当登录时,它没有显示任何东西,并且这个错误开始在日志中出现几次 日志: 我看不到这个错误来自什么activity或片段,我只知道当我之后登录到我的列表时,它在列表中没有显示任何东西并且这些错误在日志中以一行的形式出现

  • 更新:原来我不得不再次导出一个SVG,并把它放在我文件的数据文件夹中。 我再次面临一个编码问题。抱歉,如果格式不正确,我还需要改进我的编码问题的措辞方式。 ArrayIndexOutOfBoundsException:索引30超出长度30的界限意味着什么?我已经试着自己去查了,但似乎找不到它的意思。 起初,当我添加svg时,代码正常工作,然后我再次添加了同样的文件,也正常工作(Eye2、pupil

  • 我正在努力创造这个游戏https://en.wikipedia.org/wiki/Conway然而,每当我尝试使用printBoard方法时,我都会遇到以下错误 线程“main”java中出现异常。lang.ArrayIndexOutOfBoundsException:索引5超出长度5的界限。 我怎样才能解决这个问题?谢谢

  • 我计划使用yahoo finance csv api生成url,以获取股票的实时价格和时间。url是这样的http://download.finance.yahoo.com/d/quotes.csvs=@%5YHOO、GOOG、MSFT、BAC 我使用jdbc将数据存储到MySQL,但是总是有一个错误:“没有为参数5指定值”。代码如下:公共类Quote_Saver{私有无效连接(){try{Cla

  • 我不明白为什么会发生这个错误。m1.length和m1[0].length打印行和列的正确长度。我给出了以下投入: 然后发生了错误

  • 我发现这个问题几乎是一个精确的重复,但我认为答案没有分析出漏洞。参见:`*((*(&array+1))-1)`用于获取自动数组的最后一个元素是否安全? 我知道通常的方法是计算来得到数组中的元素数量。(在注释中已经向我指出C++有) 所以,我推论,如果我能通过最后一个元素找到1的地址,就可以用指针数学来计算这个数字。但是,后来我想到我可以: 在C和C++中是否有允许这种取消引用是合法的? 我知道允许