我真的是找不出问题了,为什么不能通过呀?
public class HelloWorld {
public static void main(String[] args) {
// 创建一个空的StringBuilder对象
StringBuilder str=new StringBuilder();
// 追加字符串
str.append("jaewkjldfxmopzdm");
// 从后往前每隔三位插入逗号
for(int i=str.length()-1 ; i >=0 i=i-3 ){
str.insert(i,",");
// 将StringBuilder对象转换为String对象并输出
System.out.print(str.toString());
}
}
你这是for循环那里没有学好。
for(变量初始化值,条件,变量如何变化的)这是循环的三个条件
这道题要求的是对字符串倒着插入‘,’号,那我们就得把字符串倒着循环输出就可以了。如歌题中要求是正着插入‘,’号,那我们就把字符串正着循环输出就可以。
总结,也就是要求倒着对字符串操作,我们就先倒着循环输出字符串。反之,同理
那这道题中,要求是对字符串倒着并且每隔三位插入一个逗号
对字符串倒着循环输出
定义变量初始化值,首先int i=str.length()指的是变量i的值为字符串的长度。那样int i=str.length()-3指的就是变量i的值为字符串倒数第三的位置
条件。也就是变量i需要循环到什么时候停下来。那就是当i=1的时候要停下来,也就是i>0;因为字符串的长度是从1开始的不能为0
变量是咋变化的。这个是根据题目要求而定。题中要求我们倒着每隔三位插入一个逗号,上面提到第一个插入逗号的位置是在str.length()-3这个位置,那第二次插入的位置就应该是i-6.也就是i的值在上一次的基础上减去3.所以变量i=i-3,也就是每次都减少3
字符串的末尾本来就没让你有逗号。必须int i=str.length()-3或者直接int i=13;可以i-=3也可以i=i-3
for循环错了,改为 for(int i=str.length()-3 ; i >=0 i=i-3 )就可以了,这样初始就是从后数3位出加,号
蝈蝈前来回答!
首先粘贴正确代码:
StringBuilder str=new StringBuilder();
str.append("jaewkjldfxmopzdm");
for(int i=str.length() ; i >0; i=i-3 ){
str.insert(i,",");
}
System.out.print(str.toString());
我认为前面的回答:
在循环前先int n=str.length();for(int i=n-3;i>=0;i=i-3)
是不对的,因为刚开始下标就减3,那么字符串的末尾就不会有逗号了。
这里应该注意,第一次插入位置应该是str.length(),而不是str,length() - 1; 而最后的插入位置必须大于0,也就是不能插入到字符串的头部!
其实这道题目比较有意思,因为在插入过程中字符串的长度其实是一直在变化的,但是我们并没有处理这个情况,而结果也是正确的。但如果要求从前往后每隔3个位置插入,那么套用之前的循环代码就会出错(可以思考一下原因是为什么)。我觉得慕课这样出题应该是在降低题目的难度。
那个循环你写错了吧,str.length长度在运行后是变化的。在循环前先int n=str.length();
for(int i=n-3;i>=0;i=i-3)