Java 我不明白length()在这段代码中是如何工作的

Java 我不明白length()在这段代码中是如何工作的,java,Java,请有人给我解释一下这个代码,特别是这部分 int lastpos = message.length() - 1; 他为什么加-1 == }因为索引从0开始。如果您有一个{0,1,2}的列表,请注意它的长度为3,但最后一个索引只有2。-1用于对此进行更正 如果迭代到索引3处的元素(列表的长度),则会离开列表的末尾,导致IndexOutOfBoundsException 注意,为了便于理解,我使用了列表作为示例,但对于字符串来说,情况完全相同。所有的iterables都从索引0开始。假设您有一个字

请有人给我解释一下这个代码,特别是这部分

int lastpos = message.length() - 1;
他为什么加-1

==


}因为索引从0开始。如果您有一个{0,1,2}的列表,请注意它的长度为3,但最后一个索引只有2。-1用于对此进行更正

如果迭代到索引3处的元素(列表的长度),则会离开列表的末尾,导致IndexOutOfBoundsException


注意,为了便于理解,我使用了列表作为示例,但对于字符串来说,情况完全相同。所有的iterables都从索引0开始。

假设您有一个字符串Abdullah,然后您想打印该字符串的最后一个字符 int lastpos=message.length-1 这是字符串的最后一个字符。
因此,在给定的代码中,该行打印输入字符串的最后一个字符。

您应该进一步解释您的问题所在。对我来说,似乎不清楚你的意思是什么,他为什么加-1?。你对他是什么意思?你是什么意思?代码应该怎么做?也许他考虑了以标点符号结尾的语句/消息,他希望避免这样做。但这有点吓人。在该点进行条件检查会更好。java中的length函数返回字符串中的确切字符数。上面的问题只适用于字符串。请澄清。@BiswajitR字符串和列表完全相同。我将在稍后更新术语。
    System.out.print("What is your message? ");
    String message = kb.nextLine();

    System.out.println("\nYour message is " + message.length() + " characters long.");
    System.out.println("The first character is at position 0 and is '" + message.charAt(0) + "'.");
    int lastpos = message.length() - 1;
    System.out.println("The last character is at position " + lastpos + " and is '" + message.charAt(lastpos) + "'.");
    System.out.println("\nHere are all the characters, one at a time:\n");

    for ( int i=0; i < message.length(); i++ )
    {
        System.out.println("\t" + i + " - '" + message.charAt(i) + "'");
    }

    int a_count = 0;

    for ( int i=0; i<message.length(); i++ )
    {
        char letter = message.charAt(i);
        if ( letter == 'a' || letter == 'A' )
        {
            a_count++;
        }
    }

    System.out.println("\nYour message contains the letter 'a' " + a_count + " times. Isn't that interesting?");

}