我的想法是,我有一个单词列表,用户在列表中搜索单词,然后根据单词的内容打印下面的单词或前面的单词。使用下面的单词就可以很简单:
public void pirateToEnglish(){
System.out.println("Enter the word that you want to translate ");
String nameSearch;
nameSearch=input.nextLine();
Iterator<Phrase> it = phrases.iterator();
while(it.hasNext())
{
Phrase c = it.next();
if (c.getName().equals(nameSearch)) {
System.out.println( it.next().toString());
return;
}
}
System.out.println("not on list");
}
但是我正在努力用前面的单词做这个,因为迭代器没有以前的方法。关于如何使其发挥作用的任何想法都将非常感激
答案 0 :(得分:3)
尝试ListIterator而不是Iterator
。 ListIterator
使用previous()方法访问列表中的上一个元素。
ListIterator<Phrase> iterator = phrases.listIterator();
Phrase p = iterator.previous();
答案 1 :(得分:1)
使用ListIterator。 ListIterator能够在两个方向上进行迭代。
答案 2 :(得分:0)
您可以使用ListIterator
或将上一项保存在循环内的变量中。
另一个问题 - 两次调用it.next()
是不安全的,因为您只检查it.hasNext()
一次。
答案 3 :(得分:0)
您可以将前一个元素存储在如下字符串中:
String previous = "";
while(it.hasNext())
{
Phrase c = it.next();
if (c.getName().equals(nameSearch)) {
System.out.println( "Previous : " + previous);
System.out.println( "Next : " + it.next().toString());
return;
}
previous = c.getName(); //Convert current element to String or c.getName() whichever is applicable.
}