黑马程序员技术交流社区

标题: 我一直搞不懂关于-1的问题 [打印本页]

作者: liujie445012100    时间: 2014-6-11 21:20
标题: 我一直搞不懂关于-1的问题
package string;

public class StringTest5 {
        /*
         * 字符串去掉空格事例
         */
        public static void main(String[] args) {
                String str = "";
                System.out.println(getStringTrim(str));
        }

        private static String getStringTrim(String str) {
                int start = 0;
                int end = str.length() - 1;
                while (start <= end && str.charAt(start) == ' ') {
                        start++;
                }
                while (start <= end && str.charAt(end) == ' ') {
                        end--;
                }
                return str.substring(start, end + 1);
        }
}
就像这个程序,为什么 str.length() - 1 还有结尾end + 1,一些排序方法里也有好多长度-1,谁能告诉我
作者: 彭飞    时间: 2014-6-12 08:57
基础视频里应该有讲到为什么。
1、
int end = str.length() - 1; 这句话,定义一个变量,表示结尾,该结尾是 str的长度, -1刚好表示最后一位,
          因为下标是从0 开始的, 自然要-1   能否明白。
2、
return str.substring(start, end + 1);  看了上面的话,是否觉得这里的+1 ,就很矛盾了,这不就数组越界了。
          这里涉及到 数组下标的 问题,通常  对下标的取舍,是包含头,不包含尾的,所以,substring 要获取一          个完整的字符串,这里的end就必须+1  。

其实这些问题都很简单, 为什么-1、+1  自己代码上改一改,看结果, 很快茅塞顿开。

祝加油。
         




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2