黑马程序员技术交流社区

标题: 一篇作业的分享贴 [打印本页]

作者: AugustLeo    时间: 2018-4-18 13:25
标题: 一篇作业的分享贴
        来到黑马的基础班学习也即将接近尾声,马上就要开始就业班入学考试,在这篇文章分享一下之前做过的一道题目,因为没有用到对应类的方法,可能看起来会有点乱,有种拼凑的感觉:


题目:1.键盘录入一个长字符串,再录入一个短字符串
           2.统计短字符串在长字符串中出现的次数
           3.代码运行打印格式:
                  请输入长字符串:javajavajava I love java l like jajavava I enjoy javajavajava
                  请输入短字符串:java
                  控制台输出:小字符串java,在大字符串javajavajava I love java l like jajavava I enjoy  javajavajava中共出现8次


在开始做这个题目的时候,没有想到使用String的indexOf去实现,所以单纯用了substring和equalsIgnoreCase去做的

实现代码:


public static void main(String[] args) {
                //键盘录入字符
                Scanner sc = new Scanner(System.in);
                System.out.println("请输入一个长字符:");
                String str1=sc.nextLine();
                System.out.println("请输入一个短字符:");
                String str2=sc.nextLine();
               
                //判断短字符在长字符出现的次数
                //计数
                int count=0;
                //for循环获取长字符的x位数字(x是指短字符长度),从第一位开始截取x位字符并定义成字符串与短字符内容比较,
                //下次从第二位开始截取...
                for(int i=0;i<str1.length();i++){
                        //要判断i+str2.length()【截取的最后一位的下标】的长度在str1的下标内
                        //---截取的最后一位的下标不能超过长字符的长度
                        if((i+str2.length()) <= (str1.length())){
                                String strJieQu=str1.substring(i, i+str2.length());
                                //打印截取字符
                                //System.out.println(strJieQu);
                                if(str2.equalsIgnoreCase(strJieQu)){
                                        count++;
                                }
                        }
                }
                System.out.println("小字符串:"+str2+",在大字符串:"+str1+"中共出现"+count+"次");
        }

分析:1、首先是键盘录入两个字符串-长字符串、短字符串
           2、定义一个变量,用于计算对应短字符串出现的次数
           3、对长字符串进行遍历截取,首先是从第一位(索引=0)遍历,从第一位开始截取x位字符并定义成字符串与短字符内容比较,下一次遍历则是在第二位开始….依此类推
           4、对比成功的语句体需要对之前定义的变量++
           5、对应输出打印语句
注意点:对长字符串截取需要注意截取位置不能超过长字符串的长度,否则程序会报错


        这里,老师给出的答案是用的indexOf实现的,程序看起来会更清晰也更易懂,没有使用这个方法实现是因为对一些方法的使用场景还是不熟悉,我是需要加强的,后续会继续对jdk_api操作手册学习下去。

作者: cj1234    时间: 2018-4-18 14:45
加油,每天的笔记不能落下哦




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2