繁体   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