【发布时间】:2019-06-14 02:45:16
【问题描述】:
执行我的程序时,它在第 13 行一直显示“null”我想知道我的算法出了什么问题,因为它一直打印 null。
private class SpadeIterator implements Iterator<Card>{
private int nextCardSpade;
private List<Card> cards;
private int count=0;
private SpadeIterator(List cards) {
this.cards=cards;
this.nextCardSpade = cards.size()-1;
}
@Override
public boolean hasNext() {
count++;
if(nextCardSpade<0)
return false;
//nextCardSpade--;
return true;
}
@Override
public Card next() {
int i=0;
this.count=i;
Card temp = cards.get(nextCardSpade);
while(hasNext()){ //find SPADES
temp=cards.get(nextCardSpade--);
i++;
if(temp.suit.value == Suit.SPADES.value)
return temp;
}
//DONT MOVE
return null;
//nextCardSpade--; //DONT DELETE
}
}
结果旨在显示 13 个黑桃,最后不返回 null。
【问题讨论】:
-
然后只检查null
-
您的
next()方法不应包含返回null的任何大小写。如果没有合适的元素被返回,那么它就是hasNext()方法作业返回false。 -
您的
hasNext方法也不应该以任何方式修改对象的状态(增加计数)。 -
是的,但我需要返回一些东西,否则程序无法运行
-
如果没有下一个,那么
next应该抛出 NoSuchElementException,而不是返回值。 docs.oracle.com/javase/7/docs/api/java/util/…。除非hasNext说有下一个元素,否则大多数调用者都会避免调用next。
标签: java null java-print