猿问

如何修复遍历此数组列表?

我使用两个按钮在包含 12 个月的数组列表中来回迭代,当我到达最后一个元素并按下 prevButton 时应用程序崩溃,当我返回第一个元素并点击 nextButton 时也会发生这种情况,如何我要修复我的 if 语句吗?


我尝试用 >= 和 <= 来做,但没有用


nextButton.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View v) {


                if (i < months.size()) {

                    Month month = months.get(i);

                    monthTextView.setText("" + month);

                    i++;

                }

            }

        });



        prevButton.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View v) {


                if (i >= 0) {

                    Month month = months.get(i);

                    monthTextView.setText("" + month);

                    i--;

                }

            }


        });


蛊毒传说
浏览 118回答 2
2回答

慕运维8079593

最后一次单击您i无论如何都将值更改为-1或通过在访问最后一个/第一个元素后months.size()添加/减去1让我们仔细看看这个片段:if (i >= 0) { // let us assume that i = 0, we are getting inside&nbsp; &nbsp; Month month = months.get(i); // you are assigning first element of months, everything is fine&nbsp; &nbsp; monthTextView.setText("" + month); // some data operation - irrelevant&nbsp; &nbsp; i--; // anyway you are updating i to [i = -1]}// one "next" click later...if (i < months.size()) { // condition is fine because i = -1&nbsp; &nbsp; Month month = months.get(i); // oooops tried to access months[-1] - ERROR&nbsp; &nbsp; monthTextView.setText("" + month);&nbsp; &nbsp; i++;}第二种情况也发生了同样的情况你应该做什么 -i只有当当前值是强值> 0或< month.size() - 1if (i >= 0) {&nbsp; &nbsp; Month month = months.get(i);&nbsp; &nbsp; monthTextView.setText("" + month);&nbsp; &nbsp; i = (i > 0) ? (i - 1) : 0; // for example like this}

慕标琳琳

当你到达最后一个或第一个索引时,最终值将是它的-1或maxsize,但是当你点击相反的按钮时,条件仍然通过,例如当你已经在下-1一个按钮条件仍然通过时-1< 比month.size()你的条件应该是类似于 if i-1 <= 0 然后设置 i编辑:我认为发布这个的人意味着当 ( i == months.size() - 1 ) 和你说下一个按钮时,它工作正常,因为它是最后一个月但然后我增加了一个,那就是, i == months.size() 现在是真的。然后,当您按下 prevButton 时,仅检查 i >= 0 而不是 i < months.size()。因此,数组索引现在越界了。您应该检查两种按钮方法中的索引范围。
随时随地看视频慕课网APP

相关分类

Java
我要回答