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

如何检测一个元素是否是数组中的最后一个元素?

如何检测一个元素是否是数组中的最后一个元素?

慕盖茨4494581 2021-12-30 16:14:57
下面的代码根据它的位置拆分一个字符串,然后将它放入一个 ArrayList。因此,例如,如果 String 是"Who Framed Roger Rabbit?",则将fragmentMessage在每 8 个字符处拆分消息。因此 ArrayList 将如下所示: [Who Fram, ed Roger,  Rabbit?]ArrayList 的元素如下:数组列表元素 0: Who FramArrayList 元素 1: ed RogerArrayList 元素 2: Rabbit?然后我在主要方法中有一个 for-each 循环,它迭代 ArrayList。迭代时如何检测是否已到达数组的最后一个元素?例如,“如果这是数组的最后一个元素,则打印“LAST ELEMENT ”。import java.util.ArrayList;import java.util.List;public class LastElement {public static void main(String[] args) {    String message = "Who Framed Roger Rabbit?";    for (String fragment : fragmentMessage(message)) {        /*         * If "fragment" is the last element of the array, then do something         */    }}private static List<String> fragmentMessage(String message) {    List<String> fragmentedMessage = new ArrayList<>();    for (int i = 0; i < message.length(); i = i + 8) {        fragmentedMessage.add(message.substring(i, i + 8));        System.out.println(fragmentedMessage);    }    return fragmentedMessage;}}
查看完整描述

3 回答

?
慕莱坞森

TA贡献1810条经验 获得超4个赞

没有直接的方法可以知道List在 foreach 循环中是否有 a 的最后一个条目。


最简单的方法是使用索引循环。


类似的东西:


    List<String> fragmentMessage = fragmentMessage(message);

    for (int i = 0; i < fragmentMessage.size(); i++) {

        String fragment = fragmentMessage.get(i);

        /*

         * If "fragment" is the last element of the array, then do something

         */

        if (i == fragmentMessage.size()-1) {


        }

    }

另一种选择是 Iterator


    for (Iterator<String> iterator = fragmentMessage(message).iterator();

        iterator.hasNext();) {

        String fragment = iterator.next();

        if (!iterator.hasNext()) {


        }

    }


查看完整回答
反对 回复 2021-12-30
?
慕的地6264312

TA贡献1817条经验 获得超6个赞

你有几个选择。


使用迭代器:

    String message = "Who Framed Roger Rabbit?";

    List<String> fragments = fragmentMessage(message);


    Iterator<String> iterator = fragments.iterator();

    while (iterator.hasNext()) {

        System.out.println(iterator.next());


        if (!iterator.hasNext()) {

            System.out.println("All done!");

        }

    }

检查 for/each 循环中的索引:

    for (String str :

            fragments) {


        System.out.println(str);


        // If this item is the last in the list

        if (fragments.indexOf(str) == fragments.size() - 1) {

            System.out.println("All done!");

        }

    }

使用这种方法,如果您在列表中使用字符串,请注意,如果有重复项,这将不会很准确。


使用标准 for 循环跟踪索引:

    for (int i = 0; i < fragments.size(); i++) {

        System.out.println(fragments.get(i));


        if (i == fragments.size() - 1) {

            System.out.println("All done!");

        }

    }


查看完整回答
反对 回复 2021-12-30
?
POPMUISE

TA贡献1765条经验 获得超5个赞

我的最终解决方案如下所示。它基于@k5_答案,归功于他/她/其他人。


我使用 if-else 语句仅针对最后一个元素。


    List<String> fragmentMessage = fragmentMessage(message);

    for (int i = 0; i < fragmentMessage.size(); i++) {

        String fragment = fragmentMessage.get(i);

        if (message.isEmpty()) { // Only if message == "".

            System.out.println(createFrame(message));

        } else if (i == fragmentMessage.size() - 1) { // Last element of the array.

            System.out.println(createLastFrame(fragment));

        } else {

            System.out.println(createFrame(fragment)); // Only if message is not the last message.

        }

    }


查看完整回答
反对 回复 2021-12-30
  • 3 回答
  • 0 关注
  • 520 浏览

添加回答

举报

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