Java 打印给定 ArrayList 反转的代码
Java Code That Prints Reverse of Given ArrayList
所以我试图编写一个方法,该方法 returns 与给定的 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() 方法的 return 类型应该是 char[] 或 String,因为您从 main 方法在控制台上打印
所以我试图编写一个方法,该方法 returns 与给定的 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() 方法的 return 类型应该是 char[] 或 String,因为您从 main 方法在控制台上打印