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

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

排序時arraylist索引越界

排序時arraylist索引越界

拉風的咖菲貓 2023-03-02 16:40:11
我試圖根據列表中單詞的長度對數組列表中的元素進行排序。所以最短到最長。使用下面的代碼,由于某種原因它不會被排序。問題 - 我的實施中的錯誤在哪里?public static void sort(ArrayList<String> list) {        for(int i = 0; i <  list.size(); i++) {            String e1 = list.get(i);            for(int j = i; j < list.size(); j++) {                String e2 = list.get(j);                if( e1.length() > e2.length()) {                    String tmp = e1;                    e1 = e2;                    e2 = tmp;                }            }        }        for (int i = 0; i < list.size(); i++) {            System.out.println(list.get(i));          }    } 編輯:public static void sort(ArrayList<String> list) {    for(int i = 0; i <  list.size(); i++) {        String e1 = list.get(i);        for(int j = i; j < list.size(); j++) {            String e2 = list.get(j);            if( e1.length() > e2.length()) {                String tmp = e1;                e1 = e2;                e2 = tmp;                list.set(j, e1);                list.set(i, e2);            }        }    }    for (int i = 0; i < list.size(); i++) {        System.out.println(list.get(i));      }}
查看完整描述

3 回答

?
至尊寶的傳說

TA貢獻1789條經驗 獲得超10個贊

在內循環的最后一遍,它會出界。這樣想,在它應該停止的外循環的最后一次傳遞中,您對內循環進行了額外的傳遞。

它也不會對您的列表進行排序,因為您正在比較的字符串不在您的列表中。


查看完整回答
反對 回復 2023-03-02
?
人到中年有點甜

TA貢獻1895條經驗 獲得超7個贊

刪除交換字符串值的部分:

http://img1.sycdn.imooc.com//6400627b00014be704720106.jpg

您已經在交換索引。我嘗試了沒有這部分的代碼,它似乎有效。嘗試刪除此部分并讓我知道結果。



查看完整回答
反對 回復 2023-03-02
?
斯蒂芬大帝

TA貢獻1827條經驗 獲得超8個贊

在第二個 for 循環中,將條件更改為

for(int j = i; j < list.size(); j++)


查看完整回答
反對 回復 2023-03-02
  • 3 回答
  • 0 關注
  • 162 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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