我的java代码的输出中有一个问题

我的java代码的输出中有一个问题,java,Java,我的java代码的输出中有一个问题。在tipOdd部分中,我想删除索引0中的元素和arraylist的奇数索引。例如,一个arraylist[40863752],然后预期的输出应该是[672],但我的代码输出是[6375272]。谁能帮我解决这个问题。我非常感谢你的帮助 Code: import java.io.*; import java.util.*; import java.util.ArrayList; class ArrayLinearListRev extends ArrayLin

我的java代码的输出中有一个问题。在tipOdd部分中,我想删除索引0中的元素和arraylist的奇数索引。例如,一个arraylist[40863752],然后预期的输出应该是[672],但我的代码输出是[6375272]。谁能帮我解决这个问题。我非常感谢你的帮助

Code:
import java.io.*;
import java.util.*;
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 printElements2(ArrayList<Integer> alist2)
{
    for (int i = 0; i < alist2.size(); i++) {
        System.out.print(alist2.get(i) + " ");
    }
}

public ArrayList<Integer> tipOdd(ArrayList<Integer> alist3)
{
    ArrayList<Integer> removeOdd = new ArrayList<Integer>(alist3);
    for (int i = 0; i < alist3.size(); i++)
    {
        if (i == 0 || i%2 == 0){
            removeOdd.add(alist3.get(i));
        }
    }

 return removeOdd;
 }

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

}

public class ArrayLinearListFun  
{
public static void main(String[] args)
  {
    ArrayLinearListRev obj = new ArrayLinearListRev();
    ArrayList<Integer> x = new ArrayList<Integer>();
    x.add(0, new Integer(2));
    x.add(1, new Integer(5));
    x.add(2, new Integer(7));
    x.add(3, new Integer(3));
    x.add(4, new Integer(6));
    x.add(5, new Integer(8));
    x.add(6, new Integer(40));

    System.out.print("The list is: ");
    obj.printElements(x);

    x = obj.reverse(x);
    System.out.print("\nThe list is: ");
    obj.printElements(x);

     x=obj.leftSh(2, x);
     System.out.print("\nThe list is: ");
     obj.printElements2(x);


    x=obj.tipOdd(x);
    System.out.print("\nThe list is: ");
    obj.printElements3(x);
}
}

我还没有看完你所有的代码。但是关于tipOdd方法:首先创建一个新列表,删除包含原始列表alist3中所有元素的Odd。如果原始列表是[10,2,3],那么新列表从一开始就是[10,2,3]。接下来,将原始列表中偶数索引中的所有元素添加到新列表中。所以[10,2,3]被扩展到[10,2,3,10,3]

相反,我建议你从一张空名单开始。只需删除方法第一行中new ArrayList的参数。然后在这个空列表中添加您希望从原始列表中保留的元素


您的条件i==0 | | i%2==0可能不是您想要的。当i为0时,i%2也为0,因此第一部分没有区别。如果您不希望包含在新列表中的索引0中的元素,请考虑i!0&&i%2==0。

仔细考虑这个问题。如果删除元素0,则原来为1的元素将变为0。从末尾移除而不是从开头移除。从列表末尾开始,移除列表末尾开始的所有奇数元素,然后移除第0个元素。抱歉,我说错了,我希望将元素保留在索引0和偶数索引元素中。1 0是偶数,不必单独考虑;2为什么有这么多printElements方法?所有人都在做同样的事!3创建一个空列表:removeOdd=newArrayList