A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 小鲁哥哥 于 2018-1-26 17:21 编辑

黑马程序员JavaEE基础阶段必会案例NO.25



     黑马程序员课程内容丰富多样,每个知识点我们都设计有新奇的案例让大家练习。黑马程序员训练营的课程也是案例驱动教学,每天都会进行大量的代码练习。今天我们就来一起做一个基础第一阶段第5天的一个小案例。

     案例: 1.键盘录入一个源字符串由字符串变量scrStr接收
                2.键盘录入一个要删除的字符串由字符串变量delStr接收
                3.要求
                  删除该字scrStr符串中的所有delStr字符串(最终的字符串中不能包含delStr),要求打印删除后的结果以及删除了几个delStr字符串
                4.代码运行打印格式:
                 请输入源字符串:java woaijava,i like jajavava i enjoy java
                 请输入要删除的字符串:java
                 控制台输出结果:源字符串中总共包含:5 个 java 删除java后的字符串为: woai,i like  i enjoy
    首先键盘录入非常好写,我们用Scanner这个类来写:
   
    这里我们每个接收字符串的语句前面都给了一个提示语句。
    接下来我们要开始删除字符串了,那怎么删除字符串呢?
    这里我们的思路是: 我们先定位要删除的字符串的位置:用indexOf方法,然后我们再删除。
   
   这里我们先定位了位置,我们怎么删除这个位置的字符串呢?
   好,大家先自己思考一下。
   这里给大家提供一种思路:我们用学过的substring方法可以做到,把java前面的字符串截取,然后把java后面的字符串截取,再拼接成新的字符串这个新的字符串中就少了一个java了。嘿嘿,是不是跟你想的一样呢?
  
  这里因为我们不确定要删除几次,所以用的是while循环,当index等于-1,也就说明源字符串中没有要删除的字符串了。  ok,基本上这个题就完了,还剩最后一步:统计一共删除了几个java:
  这里就是用我们学过的统计思想:
[Java] 纯文本查看 复制代码
import java.util.Scanner;

public class Test {
        public static void main(String[] args) {
                //1.键盘录入一个源字符串由字符串变量scrStr接收
                Scanner sc = new Scanner(System.in);
                System.out.println("请输入一个源字符串:");
                String scrStr = sc.nextLine();
                //2.键盘录入一个要删除的字符串由字符串变量delStr接收
                System.out.println("请输入一个要删除的字符串:");
                String delStr = sc.nextLine();
                //3.获取java在大字符串中的位置
                int index = scrStr.indexOf(delStr);
                int count = 0;//统计删除了几个java
                while(index != -1){
                        String s = scrStr.substring(0, index);//包含头,不包含尾,截取java左边的字符串
                        String s2 = scrStr.substring(index + delStr.length());//截取java右边的字符串
                        scrStr = s + s2;
                        index = scrStr.indexOf(delStr); //-1
                        count ++;
                }
                System.out.println("删除后的字符串:"+scrStr);
                System.out.println("删除了"+count+"个"+delStr);
        }
}

ok!大工告成!!
运行结果没有问题
好了,希望通过这个案例大家对于字符串相关的方法能更加熟悉,如果再遇到相关的题目可以自己完成!现在把这个案例多敲几遍吧!
   其实,每个案例都有很多种写法,不同的人可能有不同的思路。黑马程序员训练营也是非常鼓励大家开动脑筋积极思考的。
      做完了这个题,离你走上人生巅峰又近了一步,继续加油吧!骚年!  

      点进这个帖子的同学肯定是要奋发图强,学技术拿高薪的有志青年,这里我看你骨骼惊奇,是个绝世的练武奇才,你我有缘,今天我就把这个武林秘籍如来神掌传授于你! 什么?不想学如来神掌?不要紧!这里有各个门派的武林绝学,链接拿好!!哈哈哈哈

5 个回复

倒序浏览
LuDan 来自手机 初级黑马 2018-1-26 19:04:47
沙发
小板凳摆好了。我是一楼吧
回复 使用道具 举报
西索QD 来自手机 初级黑马 2018-1-26 22:24:44
藤椅
已收藏,留着以后学习
回复 使用道具 举报
LuDan 发表于 2018-1-26 19:04
小板凳摆好了。我是一楼吧

龙椅认证!哈哈
回复 使用道具 举报
西索QD 发表于 2018-1-26 22:24
已收藏,留着以后学习

越努力,越幸运!加油!~
回复 使用道具 举报
请老师帮看一下我这样做对不对
package Test;

import java.util.Scanner;

/*
案例: 1.键盘录入一个源字符串由字符串变量scrStr接收
2.键盘录入一个要删除的字符串由字符串变量delStr接收
3.要求删除该字scrStr符串中的所有delStr字符串(最终的字符串中不能包含delStr),
要求打印删除后的结果以及删除了几个delStr字符串
4.代码运行打印格式:
请输入源字符串:java woaijava,i like jajavava i enjoy java
请输入要删除的字符串:java
控制台输出结果:源字符串中总共包含:5 个 java 删除java后的字符串为: woai,i like  i enjoy
*/
public class Demo04 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入源字符串:");
        String scrStr=sc.nextLine();
        System.out.println("请输入要要删除的字符串:");
        String delStr=sc.nextLine();
        String [] arr=scrStr.split(delStr);
        StringBuffer sb=new StringBuffer();
        int count=0;
        for (int i = 0; i <arr.length ; i++) {
            sb.append(arr[i]);
            count++;
        }
        String s=new String(sb);
        String[] arrStr=s.split(delStr);
        StringBuffer sbf=new StringBuffer();
        for (int i = 0; i <arrStr.length ; i++) {
            sbf.append(arrStr[i]);
            count++;
        }
        System.out.println("源字符串中总共包含:"+(count-1)+"个"+delStr);
        System.out.println("删除"+delStr+"后的字符串为:"+sbf);
    }
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马