为什么字符串长度-1

时间:2016-07-09 11:19:47

标签: java string

我找到了以下程序来检查字符串是否是回文。

import java.util.Scanner;

public class PalindromeString{
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        System.out.println("Enter the string which you want to check whether that is palindrome or not: ");
        String s = in.next();
        String r = "";
        for(int i=s.length()-1; i>=0; i--){
            r = r+s.charAt(i);
        }
        System.out.println("Reverse of entered string "+s+" is "+r);
        if(r.equals(s)){
            System.out.println("String "+s+" is palindrome.");
        }else{
            System.out.println("String "+s+" is not palindrome.");
        }
    }
}

我不明白为什么编码器将循环变量i初始化为s.length()-1。谁能解释我为什么?我搜索了相关内容的字符串长度,但无法找到答案。

6 个答案:

答案 0 :(得分:2)

Java中的元素索引(以及大多数其他语言)始终以0开头,并继续使用低于元素大小/元素数量的数字1。

String string = "Hello World"

“H”是字符串中的第一个元素,因此索引为“0”,即字符串[0] =“H”,“e”索引为“1” - 字符串[1] =“e”,最后一个元素将被索引为“10”。

因此,在上面的例子中,一个包含11个元素的数组,索引从0到10(字符串长度减去1)。

我认为这比我更好地解释了(并且有照片!) - http://codingbat.com/doc/java-string-introduction.html

不要忘记字符串是Java中的字符数组,因此请阅读此内容以获取有关操作和访问数组的更多信息 - http://tutorials.jenkov.com/java/arrays.html

答案 1 :(得分:1)

字符串是字符数组,数组索引从0开始计数。

length是char数组中元素的数量,但因为数组从0开始,所以最高索引是元素的数量 - 1 ==> .length() - 1

答案 2 :(得分:1)

charAt的索引从0开始。 0是第一个字符。

这意味着一个长度为10的字符串,字符在0-9之间,而不是1-10。

答案 3 :(得分:1)

charAt的索引从0开始。 0是第一个字符。

这意味着一个长度为10的字符串,字符在0-9之间,而不是1-10。应该是这样子的

答案 4 :(得分:1)

因为java索引数组来自0.

例如“Hello”字符串的长度为5.“H”是“Hello”字符串的0. charachter。 据此,'e'字符在1.位置,'o'在4位。

很容易看出没有5(字符串的长度)位置,所以如果我们想要最后一个字符,我们需要长度为1。位置。

另外,我建议您查看this

答案 5 :(得分:0)

因为Java Strings使用从零开始的索引。

即。字符串中的字符索引是0 ... n-1