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

为什么一直不能通过?

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

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

}

}


提问者:Student_M3707099 2016-11-10 20:53

个回答

  • 历飞雨
    2016-12-12 20:04:10

    你这是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


  • 0821
    2016-12-01 16:17:41

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

  • 慕函数4910142
    2016-11-21 15:03:09

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

  • 绿色蝈蝈拜见
    2016-11-19 13:58:46

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

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

  • Guenon
    2016-11-10 21:03:30

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

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