英文:
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
英文:
So I was trying to write a method which returns the reverse of given ArrayList but it gives me Index error and I don't know how to solve it. I appreciate your help. This is my code:
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));
}
}
And this is the error:
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index 3 out of bounds for length 0
答案1
得分: 1
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;
}
英文:
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;
}
Hope this will work!
答案2
得分: 0
这里有一些你可能想尝试的内容。它不需要一个单独的 List
,并且循环的次数只有将整个列表复制到另一个列表的一半多。
它的原理是随着循环索引接近中间,交换开头和结尾的值。
- 设置
size
=list.size()
; - 从
0
循环到i < size/2
- 将位置
i
处的值保存到一个变量中。 - 将位置
i
处的值设置为位置size - i - 1
处的值。 - 将位置
size - i - 1
处的值设置为之前保存的值。
这将持续进行,直到循环达到中间位置。请注意,对于 偶数
大小的列表,最内部的值是相邻的并且被交换了。对于 奇数
大小的列表,最内部的项被忽略,因为它的位置是正确的。
英文:
Here is something you may want to try. It does not require a separate List
and only loops half as many times as copying the entire list to another one.
It works by swapping the values at the beginning and the end as the loop index moves closer toward the middle.
- set
size
=list.size()
; - iterate the loop from
0
toi < size/2
- save the value at
i
to a variable. - set the position at
i
to the value atsize - i - 1
- set the position at
size - i - 1
to the saved value.
This will proceed until the loop has reached the middle. Note that for even
sized lists, the inner most values are adjacent and swapped. For odd
sized lists, the inner most item is ignored since it is correctly positioned.
答案3
得分: 0
你可以尝试我的代码,它会对你有用。
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;
}
英文:
Can you try my code , it will work for you
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;
}
答案4
得分: 0
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,因为你从主方法在控制台上打印输出
英文:
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();
}
the return type of reverse() method should be char[] or String as you are printing on the console from the main method
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论