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

为什么一直不能通过?

我真的是找不出问题了,为什么不能通过呀?

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());

}

}


正在回答

5 回答

你这是for循环那里没有学好。

for(变量初始化值,条件,变量如何变化的)这是循环的三个条件

这道题要求的是对字符串倒着插入‘,’号,那我们就得把字符串倒着循环输出就可以了。如歌题中要求是正着插入‘,’号,那我们就把字符串正着循环输出就可以。

总结,也就是要求倒着对字符串操作,我们就先倒着循环输出字符串。反之,同理

那这道题中,要求是对字符串倒着并且每隔三位插入一个逗号

  1. 对字符串倒着循环输出

  2. 定义变量初始化值,首先int i=str.length()指的是变量i的值为字符串的长度。那样int i=str.length()-3指的就是变量i的值为字符串倒数第三的位置

  3. 条件。也就是变量i需要循环到什么时候停下来。那就是当i=1的时候要停下来,也就是i>0;因为字符串的长度是从1开始的不能为0

  4. 变量是咋变化的。这个是根据题目要求而定。题中要求我们倒着每隔三位插入一个逗号,上面提到第一个插入逗号的位置是在str.length()-3这个位置,那第二次插入的位置就应该是i-6.也就是i的值在上一次的基础上减去3.所以变量i=i-3,也就是每次都减少3


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

字符串的末尾本来就没让你有逗号。必须int i=str.length()-3或者直接int i=13;可以i-=3也可以i=i-3

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

     for循环错了,改为 for(int i=str.length()-3 ; i >=0 i=i-3 )就可以了,这样初始就是从后数3位出加,号

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

蝈蝈前来回答!
首先粘贴正确代码:

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个位置插入,那么套用之前的循环代码就会出错(可以思考一下原因是为什么)。我觉得慕课这样出题应该是在降低题目的难度。

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

那个循环你写错了吧,str.length长度在运行后是变化的。在循环前先int n=str.length();

for(int i=n-3;i>=0;i=i-3)

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

Student_M3707099 提问者

for(int i=str.length() ; i >= 0;i=i-3 ){str.insert(i,",");} 如果我这样结果是对的 可还是通过不了 不过我不是很懂 为什么一开始就要减三?
2016-11-10 回复 有任何疑惑可以回复我~
#2

梦想还是要有的万一实现了呢 回复 Student_M3707099 提问者

逗号是char型,用单引号。最后一位的下标是str.length()-1,题目要求从右面开始每三位用逗号分隔,下标往前推两位,就是str.length()-3
2016-11-11 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么一直不能通过?

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