A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© liujie445012100 中级黑马   /  2014-6-11 21:20  /  963 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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,谁能告诉我

1 个回复

倒序浏览
基础视频里应该有讲到为什么。
1、
int end = str.length() - 1; 这句话,定义一个变量,表示结尾,该结尾是 str的长度, -1刚好表示最后一位,
          因为下标是从0 开始的, 自然要-1   能否明白。
2、
return str.substring(start, end + 1);  看了上面的话,是否觉得这里的+1 ,就很矛盾了,这不就数组越界了。
          这里涉及到 数组下标的 问题,通常  对下标的取舍,是包含头,不包含尾的,所以,substring 要获取一          个完整的字符串,这里的end就必须+1  。

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

祝加油。
         
回复 使用道具 举报 1 0
您需要登录后才可以回帖 登录 | 加入黑马