问答详情
源自:2-6 Java 中的 StringBuilder 类的常用方法

从后往前每隔三位插入逗号与从前往后每隔三位加一个逗号为什么不同

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

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

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

for (int i=3;i<str.length();i=i+4)


提问者:隔壁诸葛村夫 2016-08-30 22:21

个回答

  • ziom
    2016-08-31 23:22:32
    已采纳

    例如,对于一个长度为7的字符串 "abcdefg"

    从后往前每隔三位插入逗号:"a,bcd,efg"

    从前往后每隔三位插入逗号:"abc,def,g"

    所以它们的遍历方式是要相反的才行。

  • 春雨里洗过的太阳93
    2016-10-03 17:36:20

    从后往前加逗号,整个字符串长度都在改变,但是插入后和插入前 有一样东西没变  就是字符串前面没有加逗号的字符的下标  是不变的

    从前往后的话   前面的下标就一直在改变 所以i+4也不对(除非只有两次循环)

  • 抱着一尾3783623
    2016-09-08 10:36:33

    // 从后往前每隔三位插入逗号
    			for(int i=str.length()-3;i>0;i=i-3){
    			        //i的位置
    				System.out.println(i);
    	    	    str.insert(i,",");
    	    	    System.out.print(str.toString());
    	    	    //str的长度
    	    	    System.out.println("  "+str.length());
    			}
    // 从前往后每隔三位插入逗号
    			for(int i=3;i<str.length();i=i+4){
    			        //i的位置
    				System.out.println(i);
    	    	    str.insert(i,",");
    	    	    System.out.print(str.toString());
    	    	    //str的长度
    	    	    System.out.println("  "+str.length());
    			}

    首先这个插入是在第几个数之后插入,记住是之后插入。

    然后从后往前,int i=str.length();这个是初始变量,所以只会执行一次。让你想,比如我在1234567,在4后面插入一个顿号,这个时候初始长度是7,7-3=4,所以在长度为4的地方插入是不是变成了1234,567,这个时候再来一次i-3=4-4=1,所以从第一个数之后插入。因为每次插入是从前往后数 的方法,每次顿号是在你要插入的数之后,所以没有影响。

    反之从前往后插入,那么就是i+4,这个时候你在第三位插入一个一个顿号,从前往后数,那么要多加一个顿号的位置,所以是i+4;

    我的理解是这样 不知道真确不真确

  • 隔壁诸葛村夫
    2016-08-30 23:01:30

    没懂,能说清楚点吗?谢谢。

  • 慕粉3773640
    2016-08-30 22:41:51

    因为字符串的长度不同,如“abcde”,从前往后“abc,de”,从后往前“ab,cde”