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

需要帮助理解字符串长度逻辑

需要帮助理解字符串长度逻辑

翻翻过去那场雪 2021-08-19 18:31:48
我试图了解 String length() 函数在反转字符串时如何工作。字符串长度是 4 那么为什么我需要在下面的工作代码中给出 length()-1 。下面的代码没有问题,需要帮助理解 length()public class MStringReverse {    String getReverse(String input) {        System.out.println(input.length());        String reverse = "";        for(int i = input.length() - 1; i >= 0; i--) {            reverse = reverse + input.charAt(i);        }        return reverse;    }    public static void main(String[] args) {        MStringReverse mr = new MStringReverse();        String result = mr.getReverse("Achilis");        System.out.println(result);    }}
查看完整描述

3 回答

?
ITMISS

TA贡献1871条经验 获得超8个赞

由于索引从0, not from 1. 因此,如果您有一个长度为 String 的字符串,4则0,1,2,3是唯一可能的索引。如果您提供的索引作为参数charAt()isless than 0或greater than or equals字符串的长度,那么您将得到StringIndexOutOfBoundsException异常。在这里你可以看到 charAt 方法是如何工作的:


public char charAt(int index) {

    if ((index < 0) || (index >= value.length)) {

        throw new StringIndexOutOfBoundsException(index);

    }

    return value[index];

}


查看完整回答
反对 回复 2021-08-19
?
鸿蒙传说

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

那是因为索引从 0 开始。

charAt(0) 是字符 1。


查看完整回答
反对 回复 2021-08-19
?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

答案是您正在迭代从 0 开始的索引。


想象一个长度为 4 的数组。它将存储 4 个项目,第一个在索引 0,第二个在索引 1,第三个在 2,最后一个在索引 3。最后一个元素的索引总是length() - 1,这就是为什么你把它作为循环中的上边界,以便不提高IndexOutOfBoundsExceptionwhile 迭代。


您可以添加一些控制台输出来查看String每次迭代的访问索引,如下所示:


public class MStringReverse {


    static String getReverse(String input) {

        System.out.println("Input length is " + input.length());

        String reverse = "";


        for(int i = input.length() - 1; i >= 0; i--) {

            System.out.println("accessing index " + i + " of \"input\"");

            reverse = reverse + input.charAt(i);

            System.out.println("last index of \"reverse\" is now " + (reverse.length() - 1));

        }


        return reverse;

    }


    public static void main(String[] args) {

        String result = getReverse("Achilis");

        System.out.println(result);

    }

}


查看完整回答
反对 回复 2021-08-19
  • 3 回答
  • 0 关注
  • 157 浏览

添加回答

举报

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