为了账号安全,请及时绑定邮箱和手机立即绑定

是否有可能检查 foreach 循环中的上一个和下一个元素?

是否有可能检查 foreach 循环中的上一个和下一个元素?

狐的传说 2023-11-01 22:00:01
在java中使用foreach如何检查上一个和下一个元素。是否有可能检查每个循环中的上一个和下一个元素
查看完整描述

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);

                              }

                }

  }

}

还附加输出:

https://img1.sycdn.imooc.com/65425a100001cb2806480567.jpg



查看完整回答
反对 回复 2023-11-01
?
慕田峪9158850

TA贡献1794条经验 获得超7个赞

不。

“foreach”结构使用了Iteratorunderlying,它只有一个next()andhasNext()函数。没有办法得到previous()

Lists有一个ListIterator允许查看前一个元素,但“foreach”不知道如何使用它。因此,唯一的解决方案是记住单独变量中的前一个元素,或者仅使用像这样的简单计数循环:for(int i=0;i< foo.length();i++)


查看完整回答
反对 回复 2023-11-01
?
慕婉清6462132

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 上发布问题,其中不包含任何内容来表明您的努力确实很糟糕。


查看完整回答
反对 回复 2023-11-01
?
慕尼黑的夜晚无繁华

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

}

并且不要忘记检查下一项和上一项是否存在。


查看完整回答
反对 回复 2023-11-01
  • 4 回答
  • 0 关注
  • 166 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信