4-3的编程练习

4-3的编程练习

public class StringDemo {


    public static void main(String[] args) {

//定义字符串"abc"

        StringBuilder s1=new StringBuilder("abc");

        //经过处理得到字符串"fed---cba"

        s1.replace(0,3,"fed---cba");

        

        //进一步变换得到字符串"fedcba"

        System.out.println(s1.delete(3,6));

        

}

}

1、 定义字符串"abc"

2、 使之经过处理得到字符串"fed---cba",并进一步得到字符串"fedcba"

老师,代码打完了,但是感觉好奇怪啊,即便是运行成功,也觉得自己是不是用的方法还是不够好,是不是有更好的解决方式呢?我把任务要求也贴了出来,老师看一下,谢谢!


正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好。还是分条回复:

1、因为replace方法中,实现了如果索引不存在指定字符则延伸到序列的结尾。所以同学即便是指定了3,也是将下标从0到2的部分进行了删除。

2、reverse方法的用途是将字符串中的字符倒序,reverse是StringBuilder中的方法,String中没有。只要是StringBuilder的对象,直接调用就可以了。调用后这个此对象的字符顺序就会反转。

如果解答了同学的疑问,望采纳~

祝学习愉快~


  • 鱼儿0001 提问者 #1
    好的,谢谢老师!
    2019-06-26 19:37:19
芝芝兰兰 2019-06-24 20:00:49

同学你好。下面来一条条解答你的疑惑:


1、replace方法一般用来替换一个字符串的局部,并且子字符串从指定的开始处开始并延伸到索引结束处的字符, 如果不存在指定字符则延伸到序列的结尾。首先删除子字符串中的字符,然后在第一个参数指定的位置处插入指定的String。

因此,同学使用replace(0,3,"fed---cba")就有失妥当。且不说s1只有三个字符,下标从0开始,下标3 是不存在的。利用replace替换也将之前赋值给它的"abc"尽数删去。


2、同学可以仔细考虑一下题目为什么要求先创建"abc"?"abc"和"cba"是同样的三个字符,它们之间是什么关系呢?说到这里同学可能明白了。题目是要使用reverse方法将字符串逆序。

那么先逆序abc再追加还是先拼接后追加呢?考虑到题目是考察StringBuilder的常用方法,那么就要多借用它已实现的方法,减少多余步骤。


3、综上所述,我们可以这样实现:

//经过处理得到字符串"fed---cba"
System.out.println(s1.append("---def")); // 得到 abc---def
System.out.println(s1.reverse()); // 得到 fed---cba

//进一步变换得到字符串"fedcba"
System.out.println(s1.delete(3, 6));


如果解答了同学的疑问,望采纳~

祝学习愉快~


  • 提问者 鱼儿0001 #1
    谢谢老师的耐心回复。1、确是,我之前用的replace方法尽管完成了代码,但是方法的使用方式其实不当。但是,为什么没有s1的字符串没有下标3,还能把abc给替换了?2、老师,reverse方法的用途和使用规则能不能介绍一下,谢谢!
    2019-06-25 16:18:54
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师