我的java代码的输出中有问题。在tipOdd部分中,我要删除arraylist的索引0和奇数索引中的元素。例如,一个arraylist [40 8 6 3 7 5 2],然后预期的输出应该是[6 7 2],但是我的代码输出是[6 3 7 5 2 6 7 2]。谁能帮助我解决问题。非常感谢您的帮助!
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);
}
}
答案 0 :(得分:1)
我还没有阅读完所有代码。但是关于您的tipOdd
方法:首先创建一个新列表removeOdd
,其中包含原始列表alist3
中的元素 all 。如果原始列表是[10,2,3],则新列表从一开始就是[10,2,3]。接下来,将原始列表中偶数索引中的所有元素添加到新列表中。因此[10,2,3]扩展为[10,2,3,10,3]。
相反,我建议您从空列表开始。只需在方法的第一行中删除new ArrayList<Integer>
的参数即可。然后在此空白列表中添加要保留在原始列表中的元素。
您的条件i == 0 || i%2 == 0
可能不是您想要的。当i
为0时,i % 2
也为0,因此第一部分没有区别。如果您不希望新表中包含索引0的元素,请考虑使用i != 0 && i % 2 == 0
。