[英]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()
;0
到i < 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.