簡體   English   中英

打印給定 ArrayList 反轉的 Java 代碼

[英]Java Code That Prints Reverse of Given ArrayList

所以我試圖編寫一個返回給定 ArrayList 反向的方法,但它給了我索引錯誤,我不知道如何解決它。 我感謝您的幫助。 這是我的代碼:

import java.util.ArrayList;

public class question2 {

public static ArrayList<Double> reverse(ArrayList<Double> arraylist) {
    ArrayList<Double> result = new ArrayList<Double>();
    for(int i=0; i<arraylist.size(); i++) {
        result.set((arraylist.size()) - 1 - i, arraylist.get(i));
    }
    return result;
}

public static void main(String[] args) {
    
    ArrayList<Double> doubles = new ArrayList<Double>();
    doubles.add(1.5);
    doubles.add(2.3);
    doubles.add(7.7);
    doubles.add(8.6);
    System.out.println(reverse(doubles));
    
}

}

這是錯誤:

Exception in thread "main" java.lang.IndexOutOfBoundsException: Index 3 out of bounds for length 0
public static ArrayList<Double> reverse(ArrayList<Double> arraylist) {
       ArrayList<Double> result = new ArrayList<Double>(arraylist.size());
        for(int i=arraylist.size()-1; i>=0; i—-) {
            result.add(arraylist.get(i));
        }
        return result;
     }

希望這會奏效!

這是您可能想嘗試的內容。 它不需要單獨的List ,循環次數僅為將整個列表復制到另一個列表的一半。

它的工作原理是在循環索引向中間移動時交換開頭和結尾的值。

  • 設置size = list.size() ;
  • 循環從0i < size/2
  • i處的值保存到變量中。
  • i處的位置設置為size - i - 1處的值
  • size - i - 1的位置設置為保存的值。

這將繼續進行,直到循環到達中間。 請注意,對於even大小的列表,最里面的值是相鄰的並交換了。 對於odd大小的列表,最里面的項目被忽略,因為它被正確定位。

你能試試我的代碼嗎,它對你有用

 public static List<Double> reverse(ArrayList<Double> arraylist) {
        List<Double> result = Arrays.asList(new Double[arraylist.size()]);
        for(int i=0; i<arraylist.size(); i++) {
            result.set((arraylist.size()) - 1 - i, arraylist.get(i));
        }
        return result;
    }
public static String reverse(ArrayList<Double> arraylist) {
ArrayList<Double> result = new ArrayList<Double>();
for(int i=arraylist.size() -1; i>=0; i--) {
    result.add(arraylist.get(i));
}
return result.toString();

}

當您從主方法在控制台上打印時,reverse() 方法的返回類型應為 char[] 或 String

暫無
暫無

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

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