簡體   English   中英

Arraylist Java 顯示超出范圍的索引

[英]Arraylist Java showing out index out of bounds

我的目標是創建一個新實例,其中前 2 個元素是原始元素,之后是最后 3 個元素的中位數。例如, [5,2,9,1,7,4,6,3,8]變為[5,2,5,2,7,4,6,4,6]

我解決這個問題的方法是創建 2 個新數組列表,其中一個是從索引 2 開始並具有(i-2,i+1)的 3 個元素之間的子數組,排序並最后將新子數組的索引 1 放入我的新的數組列表。 但是,這會遇到索引越界錯誤。

import java.util.*;

 public class P2J4
{
    public static void main (String[]args){
       List<Integer> items = Arrays.asList(16, 42, 99, 17, 2);
       ArrayList<Integer>newarr=new ArrayList<>();
       newarr.add(0,items.get(0));
       newarr.add(1,items.get(1));
    
       for(int i=2;i<items.size();i++){
          
           List<Integer> sub = items.subList(i-2,i+1);
      
           Collections.sort(sub);
           newarr.set(i,sub.get(1));
        }
    }
}

ArrayList.set僅更新現有元素。 如果給定的索引超出范圍,它不會 append 元素。 您需要使用ArrayList.add或預先添加足夠的元素,以便newarr.size() == items.size()

newarr.add(sub.get(1));
import java.util.*;

 public class P2J4
{
    public static void main (String[]args){
       List<Integer> items = Arrays.asList(16, 42, 99, 17, 2);
       ArrayList<Integer>newarr=new ArrayList<>();
       newarr.add(0,items.get(0));
       newarr.add(1,items.get(1));
    
       for(int i=2;i<items.size();i++){
          
           List<Integer> sub = items.subList(i-2,i+1);
      
           Collections.sort(sub);
           newarr.add(sub.get(1));
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM