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

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

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

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

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

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


正在回答

6 回答

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

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

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

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

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

隔壁诸葛村夫 提问者

我的意思是为什么从后往前是“i=i-3” 从前往后就变成了“i=i+4”,为什么不是“i=i+3”呢
2016-09-01 回复 有任何疑惑可以回复我~
#2

ziom 回复 隔壁诸葛村夫 提问者

下标从0开始,所以从前往后要+4
2016-09-01 回复 有任何疑惑可以回复我~
#3

隔壁诸葛村夫 提问者

非常感谢!
2016-09-01 回复 有任何疑惑可以回复我~

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

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

0 回复 有任何疑惑可以回复我~
// 从后往前每隔三位插入逗号
			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;

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

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

隔壁诸葛村夫 提问者

很有道理,谢谢帮助
2016-09-08 回复 有任何疑惑可以回复我~

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

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

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

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

举报

0/150
提交
取消

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

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