Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何检测一个元素是否是数组中的最后一个元素?_Java_Arrays_Loops_Arraylist_Foreach - Fatal编程技术网

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

Java 如何检测一个元素是否是数组中的最后一个元素?,java,arrays,loops,arraylist,foreach,Java,Arrays,Loops,Arraylist,Foreach,下面的代码根据字符串的位置拆分字符串,然后将其放入ArrayList中 因此,例如,如果字符串是“谁陷害了Roger Rabbit?”,则fragmentMessage将每隔8个字符分割消息 所以ArrayList将如下所示:[谁是Fram,ed Roger,Rabbit?] ArrayList的元素如下所示: ArrayList元素0:Who Fram ArrayList元素1:ed Roger ArrayList元素2:Rabbit? 然后,在主方法中,我有一个for-each循环,它在Ar

下面的代码根据字符串的位置拆分字符串,然后将其放入ArrayList中

因此,例如,如果字符串是
“谁陷害了Roger Rabbit?”
,则
fragmentMessage
将每隔8个字符分割消息

所以ArrayList将如下所示:
[谁是Fram,ed Roger,Rabbit?]

ArrayList的元素如下所示:

  • ArrayList元素0:
    Who Fram
  • ArrayList元素1:
    ed Roger
  • ArrayList元素2:
    Rabbit?
  • 然后,在主方法中,我有一个for-each循环,它在ArrayList上迭代

    迭代时如何检测是否已到达数组的最后一个元素

    例如,“如果这是数组的最后一个元素,那么打印“last element”

    import java.util.ArrayList;
    导入java.util.List;
    公共类LastElement{
    公共静态void main(字符串[]args){
    String message=“谁陷害了兔子罗杰?”;
    for(字符串片段:fragmentMessage(消息)){
    /*
    *如果“fragment”是数组的最后一个元素,那么执行一些操作
    */
    }
    }
    私有静态列表碎片消息(字符串消息){
    List fragmentedMessage=new ArrayList();
    for(int i=0;i
    没有直接的方法可以知道foreach循环中是否有
    列表的最后一个条目

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

    诸如此类:

        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) {
    
            }
        }
    

    没有直接的方法可以知道foreach循环中是否有
    列表的最后一个条目

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

    诸如此类:

        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) {
    
            }
        }
    

    你有几个选择

    使用迭代器: 使用这种方法,如果您在列表中使用字符串,请注意,如果有重复项,这将不是非常准确

    使用标准for循环跟踪索引:
    for(int i=0;i
    您有几个选择

    使用迭代器: 使用这种方法,如果您在列表中使用字符串,请注意,如果有重复项,这将不是非常准确

    使用标准for循环跟踪索引:
    for(int i=0;i
    我的最终解决方案是这样的。它基于@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.
            }
        }
    
    List fragmentMessage=fragmentMessage(消息);
    对于(int i=0;i
    我的最终解决方案是这样的。它基于@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.
            }
        }
    
    List fragmentMessage=fragmentMessage(消息);
    对于(int i=0;i
    可以使用
    迭代器,而不是
    for
    循环,迭代器具有
    hasNext()
    方法。或者使用索引的传统for循环。可能有更好的方法,这取决于您实际想要实现的目标。但是您没有说…可能的重复而不是
    for
    循环,您可以使用
    迭代器,它有一个
    hasNext()
    method。或者是传统的for循环,它使用索引。可能有更好的方法,这取决于您实际想要实现的目标。但是您没有说……您考虑到最后一个元素也是空的情况下,可能会出现重复?@k5_u我看不出最后一个元素在我的代码中可能是空的。有什么方法可以私下发送给您吗u我的类?你考虑过最后一个元素也是空的情况吗?@k5_u我看不出最后一个元素在我的代码中是空的。我有什么方法可以私下把我的类发送给你吗?
        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 (int i = 0; i < fragments.size(); i++) {
            System.out.println(fragments.get(i));
    
            if (i == fragments.size() - 1) {
                System.out.println("All done!");
            }
        }
    
        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.
            }
        }