[英]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.