二元运算符的不良操作数类型%
问题描述:
我正在练习我的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();
}
}
}
为什么不编译? '二元运算符'的错误操作数类型'
我认为问题与列表元素是整数,而我将它们与int(s)进行比较。任何想法如何解决这个问题?
答
它应该是:
if (pointer.next() % 2 == 1){
pointer.remove();
}
指针是Iterator
,你不能对其执行%。您必须通过调用pointer.next()
来获取Ierator
当前位置处的整数。
答
替换:
if (pointer % 2 == 1)
与
if (pointer.next() % 2 == 1)
答
有在你的代码的一些错误,工作代码为: - 做
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();
}
}
}
答
变化 - 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]
指针类型Iterator'的'和'不Integer'。你需要首先提取整数值来调用% – Neo 2014-10-22 06:25:30
@ Mhsmith21答案posted – 2014-10-22 06:27:53