我正在练习我的java并遇到了一些问题。
我想学习从Arraylist中删除元素,所以我删除了几率。
public static void arrayLists(){
List<Integer> xlist = new ArrayList<Integer>();
for (int x = 0; x < 10; x ++){
xlist.add(x);
}
for (Iterator<Integer> pointer = xlist.iterator(); pointer.hasNext();){
if (pointer % 2 == 1){
pointer.remove();
}
}
}
为什么不编译? &#39;二元运算符%&#39;
的错误操作数类型我认为问题与列表中的元素有关,而我将它们与int(s)进行比较。任何想法如何解决这个问题?
答案 0 :(得分:0)
应该是:
if (pointer.next() % 2 == 1){
pointer.remove();
}
指针是Iterator
,您无法对其执行%。您必须通过调用Ierator
来获取pointer.next()
当前位置的整数。
答案 1 :(得分:0)
替换:
if (pointer % 2 == 1)
与
if (pointer.next() % 2 == 1)
答案 2 :(得分:0)
您的代码中存在一些错误,工作代码将是: -
public static void arrayLists(){
List<Integer> xlist = new ArrayList<Integer>();
for (int x = 0; x < 10; x++){ //this is not a compiler error but avoid unnecassary spaces , x ++ should be x++
xlist.add(x);
}
Iterator<Integer> pointer = xlist.iterator(); // write this out of the for loop statement, since we wont be needing it
while(pointer.hasNext()){ //its better to use while loop, since there is no increment for counter variable required, the iterator will do that job
if (pointer.next() % 2 == 1){ //get current element in iterator by using next() function, pointer.next()
pointer.remove();
}
}
}
答案 3 :(得分:0)
已完成更改 - if (pointer.next() % 2 == 1)
。 .next
实际上会返回该对象
公共课测试{
public static void main(String[] args) {
arrayLists();
}
public static void arrayLists() {
List<Integer> xlist = new ArrayList<Integer>();
for (int x = 0 ; x < 10 ; x++) {
xlist.add(x);
}
for (Iterator<Integer> pointer = xlist.iterator() ; pointer.hasNext() ;) {
if (pointer.next() % 2 == 1) {
pointer.remove();
}
}
System.out.println(xlist);
}
}
<强>输出
[0, 2, 4, 6, 8]