亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何修復遍歷此數組列表?

如何修復遍歷此數組列表?

蠱毒傳說 2023-06-04 15:19:21
我使用兩個按鈕在包含 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--;                }            }        });
查看完整描述

2 回答

?
慕運維8079593

TA貢獻1876條經驗 獲得超5個贊

最后一次單擊您i無論如何都將值更改為-1或通過在訪問最后一個/第一個元素后months.size()添加/減去1


讓我們仔細看看這個片段:


if (i >= 0) { // let us assume that i = 0, we are getting inside

    Month month = months.get(i); // you are assigning first element of months, everything is fine

    monthTextView.setText("" + month); // some data operation - irrelevant

    i--; // anyway you are updating i to [i = -1]

}


// one "next" click later...


if (i < months.size()) { // condition is fine because i = -1

    Month month = months.get(i); // oooops tried to access months[-1] - ERROR

    monthTextView.setText("" + month);

    i++;

}

第二種情況也發生了同樣的情況


你應該做什么 -i只有當當前值是強值> 0或< month.size() - 1


if (i >= 0) {

    Month month = months.get(i);

    monthTextView.setText("" + month);

    i = (i > 0) ? (i - 1) : 0; // for example like this

}


查看完整回答
反對 回復 2023-06-04
?
慕標琳琳

TA貢獻1830條經驗 獲得超9個贊

當你到達最后一個或第一個索引時,最終值將是它的-1maxsize,但是當你點擊相反的按鈕時,條件仍然通過,例如當你已經在下-1一個按鈕條件仍然通過時-1< 比month.size()你的條件應該是類似于 if i-1 <= 0 然后設置 i

編輯:我認為發布這個的人意味著當 ( i == months.size() - 1 ) 和你說下一個按鈕時,它工作正常,因為它是最后一個月但然后我增加了一個,那就是, i == months.size() 現在是真的。然后,當您按下 prevButton 時,僅檢查 i >= 0 而不是 i < months.size()。因此,數組索引現在越界了。您應該檢查兩種按鈕方法中的索引范圍。


查看完整回答
反對 回復 2023-06-04
  • 2 回答
  • 0 關注
  • 152 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號