黑马程序员技术交流社区

标题: 字符串查询 [打印本页]

作者: crosam    时间: 2015-9-10 00:14
标题: 字符串查询
/**
* 任意输入一串字符,给定要插找的字符小串,输出一共出现了多少次
*/
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;
        }
}





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