Java 编译器给定的方法已定义错误--如何解决它?

Java 编译器给定的方法已定义错误--如何解决它?,java,Java,当我编译代码时,我收到了这个错误。 我没有办法解决它。我应该删除一个吗?我想用这些语句来打印我的输出,如果我只保留一条,它只能打印出相反的部分 代码: import java.util.ArrayList; class ArrayLinearListRev extends ArrayLinearList{ public ArrayList<Integer> reverse(ArrayList<Integer> alist)

当我编译代码时,我收到了这个错误。

我没有办法解决它。我应该删除一个吗?我想用这些语句来打印我的输出,如果我只保留一条,它只能打印出相反的部分

代码:

import java.util.ArrayList;

    class ArrayLinearListRev extends ArrayLinearList{
    public ArrayList<Integer> reverse(ArrayList<Integer>  
    alist)
        {
            ArrayList<Integer> revArrayList = new  
    ArrayList<Integer>();
            for (int i = alist.size() - 1; i >= 0; i --   
    ) {
                revArrayList.add(alist.get(i));
            }

            return revArrayList;
        }

        public void printElements(ArrayList<Integer>  
    alist)
        {
            for (int i = 0; i < alist.size(); i++) {
                System.out.print(alist.get(i) + " ");
            }
        }

    public ArrayList<Integer> leftSh(int post,  
    ArrayList<Integer> alist2)
    {
       ArrayList<Integer> LeftshifedList = new  
    ArrayList<Integer>(alist2);
       for (int i = 1; i <= post; i++)
       {
           LeftshifedList.remove(0);
       }

       return LeftshifedList;

    }

    public void printElements(ArrayList<Integer> alist2)
    {
        for (int i = 0; i < alist2.size(); i++) {
            System.out.print(alist2.get(i) + " ");
        }
    }



    }

你不能让两种打印方法都有相同的签名。 您需要有不同的名称,最好是描述性名称

在这个类中,打印方法是相同的。 当我从您的示例中提取这些方法并添加一些样式时,很明显这些方法的作用完全相同

public void printElements(ArrayList<Integer> alist) {
    for (int i = 0; i < alist.size(); i++) {
        System.out.print(alist.get(i) + " ");
    }
}

public void printElements(ArrayList<Integer> alist2) {
    for (int i = 0; i < alist2.size(); i++) {
        System.out.print(alist2.get(i) + " ");
    }
}
因此,您可以删除其中一种方法。然后可以使用相同的方法打印反转数组和移位数组:

public void printElements(ArrayList<Integer> list) {
    for (int i = 0; i < list.size(); i++) {
        System.out.print(list.get(i) + " ");
    }
}
和使用

public static void main(String[] args) {
    ArrayList<Integer> myList = new ArrayList<Integer>();

    ArrayLinearListRev allr = new ArrayLinearListRev();

    myList = allr.reverse(myList);
    allr.printElements(myList);
    myList = allr.leftSh(2, myList);
    allr.printElements(myList);
}

错误是什么?有警告-什么警告?PrintElementsArrayListRevi已经在ArrayLinearListRevI中定义了printElementsArrayList我已经添加了我代码的屏幕截图这是一个错误,不是警告。之所以会出现此错误,是因为在ArrayList中有两个具有相同名称printElements和相同参数的方法。Java无法区分这两种方法。移除其中一个。