Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
打印给定ArrayList反面的Java代码_Java_Exception_Arraylist_Compiler Errors_Indexoutofboundsexception - Fatal编程技术网

打印给定ArrayList反面的Java代码

打印给定ArrayList反面的Java代码,java,exception,arraylist,compiler-errors,indexoutofboundsexception,Java,Exception,Arraylist,Compiler Errors,Indexoutofboundsexception,所以我试着写一个方法,返回给定ArrayList的相反方向,但它给了我索引错误,我不知道如何解决它。我感谢你的帮助。这是我的代码: import java.util.ArrayList; public class question2 { public static ArrayList<Double> reverse(ArrayList<Double> arraylist) { ArrayList<Double> result = new Array

所以我试着写一个方法,返回给定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));
    
}

}
公共静态ArrayList反向(ArrayList ArrayList){
ArrayList结果=新的ArrayList(ArrayList.size());
对于(int i=arraylist.size()-1;i>=0;i--){
add(arraylist.get(i));
}
返回结果;
}

希望这能奏效

以下是您可能想尝试的内容。它不需要单独的
列表
,循环次数仅为将整个列表复制到另一个列表的一半

它通过在循环索引向中间移动时交换开始和结束处的值来工作

  • 设置
    size
    =
    list.size()
  • 迭代从
    0
    i
  • i
    处的值保存到变量中
  • i
    位置设置为
    size-i-1
  • size-i-1
    位置设置为保存的值

这将继续进行,直到循环到达中间。请注意,对于大小为偶数的
列表,最里面的值是相邻的并交换的。对于奇数大小的列表,最里面的项目被忽略,因为它的位置正确。

你能试试我的代码吗,它对你有用

 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;
    }
公共静态列表反向(ArrayList ArrayList){
列表结果=Arrays.asList(新的双精度[arraylist.size()]);
对于(int i=0;i
公共静态字符串反转(ArrayList ArrayList){
ArrayList结果=新建ArrayList();
对于(int i=arraylist.size()-1;i>=0;i--){
add(arraylist.get(i));
}
返回result.toString();
}


reverse()方法的返回类型应该是char[]或String,因为您正在从main方法在控制台上打印

请阅读
set
方法的文档。我用ArrayList result=ArrayList(ArrayList.size())更改了第一部分还有arraylist.set和arraylist.add,但它不起作用。请向上投票并将其标记为正确答案。提前感谢,它仍然不起作用,并引发相同的异常(我只是复制粘贴)是否可以使用集合。反转(arraylist);我不能,我必须自己写,因为这是为了上学。谢谢你的回答。但我不能使用预先制作的方法,因为这是一种家庭作业。我必须自己写。但无论如何,谢谢:)是的,这也可以用另一种方式工作。谢谢你的回答。我很感激。嗯,它给出了某种错误。但我想那是因为我没有导入所需的库。谢谢你的回答:)
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 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();