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

循环里面调用 str.insert() 方法,每一次插入是否会立即生效,并且改变str.length()的值?

public class HelloWorld {

    public static void main(String[] args) {

// 创建一个空的StringBuilder对象

StringBuilder str = new StringBuilder();

// 追加字符串

str.append("jaewkjldfxmopzdm");

        // 从后往前每隔三位插入逗号

for(int i=str.length()-3; i>0; i-=3){

       str.insert(i, ",");

}

        

        

        // 将StringBuilder对象转换为String对象并输出

System.out.print(str.toString());

}

}


正在回答

6 回答

长度是变的,不过逗号从后面往前加,位置从前面往后数,而且长度只在第一次赋值的时候用到,所以长度变化不影响最终结果.

1 回复 有任何疑惑可以回复我~

字符串长度是变了 不过你一开始设定的int i = str.length() -3是不会变的   这个不是随动的  一开始 i等于 13那就一直是十三了  就算后面怎么变也是从十三往  12  11 ....0走的  

如果是从零开始往后走,走一位加一个  那才是无限循环(也就是++)

0 回复 有任何疑惑可以回复我~
#1

精慕门3907814

其实我觉得楼主想问的是为什么是 i-=3,中间不是插入了一个逗号吗?也就是说逗号是在 i 的前一个位置(即,i+1的位置), 所以下一个逗号不应该是插在 i-4 的位置吗?为什么是i-3的位置呢?
2019-01-16 回复 有任何疑惑可以回复我~


public class StringBuilderll {

  public static void main(String[] args) {

// 创建一个空的StringBuilder对象

        StringBuilder str = new StringBuilder();

// 追加字符串

str.append("jaewkjldfxmopzdm");

        // 从后往前每隔三位插入逗号

for(int i= str.length()-3;i>0;i=i-3)

{

         str.insert(i,",");

         System.out.print(i+" ");

         System.out.println(str.length());

     //插入“,”长度会变!!但是不影响for循环的正确性。因为每次插入后只看前面的字母,向前走三格,与后面逗号无关。

}

/*

13 17

10 18

7 19

4 20

1 21

j,aew,kjl,dfx,mop,zdm

        */

        // 将StringBuilder对象转换为String对象并输出

System.out.print(str.toString());

}

  }


1 回复 有任何疑惑可以回复我~

53a7d36c0001e3cd06760242.jpg仔细看这个程序就懂了吧

0 回复 有任何疑惑可以回复我~

同问!!插入之后的字符串不是变了吗?

1 回复 有任何疑惑可以回复我~

str.length()的值是不会改变的,length指的是数组长度,数组不变长度也不会变啊

0 回复 有任何疑惑可以回复我~
#1

Imposs1ble 提问者

插入之后的字符串不是变了吗?
2018-02-12 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

循环里面调用 str.insert() 方法,每一次插入是否会立即生效,并且改变str.length()的值?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信