4 回答
TA贡献1815条经验 获得超10个赞
for Each 循环的一些限制。
另外,这可以是一种方式:
public class Main
{
public static void main(String[] args) {
String[] arr={"a","b"};
String next="";
String current="";
String prev="";
for(int i=0;i<arr.length;i++){
//previousElement
if(i>0){
prev=arr[i-1] ;
System.out.println("previous: "+prev);
}else{
prev="none";
System.out.println("previous: "+prev);
}
//currentElement
current=arr[i];
System.out.println(" current: "+current);
//nextElement
if(i<arr.length-1){
next=arr[i+1];
System.out.println(" next: "+next);
}else{
next="none";
System.out.println(" next: "+next);
}
}
}
}
还附加输出:
TA贡献1794条经验 获得超7个赞
不。
“foreach”结构使用了Iterator
underlying,它只有一个next()
andhasNext()
函数。没有办法得到previous()
。
Lists
有一个ListIterator
允许查看前一个元素,但“foreach”不知道如何使用它。因此,唯一的解决方案是记住单独变量中的前一个元素,或者仅使用像这样的简单计数循环:for(int i=0;i< foo.length();i++)
。
TA贡献1804条经验 获得超2个赞
使用“foreach”只有next()和hasNext()方法,因此它不提供反向遍历或提取元素的方法。
考虑到您有一个字符串 ArrayList,您可以使用java.util.ListIterator它提供的方法,例如hasPrevious()和previous()
下面是如何使用它的示例。** 阅读代码一侧的注释,因为它包含使用这些方法的重要细节。**
ArrayList<String> mylist = new ArrayList<>();
ListIterator<String> myListIterator = mylist.listIterator();
myListIterator.hasNext(); // Returns: true if list has next element
myListIterator.next(); // Returns: next element , Throws:NoSuchElementException - if the iteration has no next element
myListIterator.hasPrevious(); // Returns: true if list has previous element
myListIterator.previous(); //Returns: the previous element in the list , Throws: NoSuchElementException - if the iteration has no previous element
希望这可以帮助。
PS:您应该发布到目前为止所做的代码,在 stackoverflow 上发布问题,其中不包含任何内容来表明您的努力确实很糟糕。
TA贡献1864条经验 获得超6个赞
这样做的目的是什么?
foreach您可能应该使用for循环和索引来代替 a
for(int i=0;i<lenght;i++) {
list[i-1].dostuff //previous
list[i].dostuff //current
list[i+1].dostuff //next item
}
并且不要忘记检查下一项和上一项是否存在。
添加回答
举报