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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© crosam 中级黑马   /  2015-9-10 00:14  /  180 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

/**
* 任意输入一串字符,给定要插找的字符小串,输出一共出现了多少次
*/
package day12;

import java.util.Scanner;

public class CountDemo {
        public static void main(String[] args) {
                System.out.println("请输入字符串:");
                Scanner sc = new Scanner(System.in);
                String maxString = sc.nextLine();
                System.out.println("请输入要查询的字符串:");
                String minString = sc.nextLine();

                // 功能模块
                int count = getCount(maxString, minString);
                System.out.println(count);
                int pos = getPos(maxString, minString);

                System.out.println(pos);

        }

        /**
         * 查找统计功能 (while实现)
         *
         * @param maxString
         *            大字符串
         * @param minString
         *            小字符串
         * @return 返回统计查找到的次数
         */
        public static int getCount(String maxString, String minString) {
                // 计数
                int count = 0;

                // indexOf(String str) --->返回指定字符串在此字符串中第一次出现的索引
                int index = maxString.indexOf(minString);

                // 不知道要循环到少次
                // 只要index的值不等于-1
                while (index != -1) {
                        count++;
                       
                /*         类似s -=1;       
                 * String substring(int index)--->截取字符串,返回从指定位置开始截
                 *                 取后的字符串,原字符串长度不变
                 *
                 * 就是把查找过的字符串截掉,重新赋
                */
                        maxString = maxString.substring(index + minString.length());

                        // 再查询一次,是否还包含指定字符串
                        index = maxString.indexOf(minString);
                }

                return count;
        }

       
        /**
         * for循环实现
         * @param maxString
         * @param minString
         * @return
         */
        public static int getPos(String maxString, String minString) {
                int count = 0;
//                使用for死循环,一直 i=0   ,
//                for (int i = 0; i < maxString.length();) {
                for(;;){
                        int index = maxString.indexOf(minString);
                        if (index != -1) {
                                count++;
                                maxString = maxString.substring(index + minString.length());
                                index = maxString.indexOf(minString);
                        } else {
                                break;
                        }
                }
                return count;
        }
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马