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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

这段代码变量定义的有点多了
public class StringDemo {
        public static void main(String[] args) {
                Scanner sc = new Scanner(System.in);
                System.out.println("请输入一串字符:");
                String str = sc.nextLine();
                System.out.println("请输入子串");
                String zs = sc.nextLine();
                StringBuilder sb = new StringBuilder(str);
                int x = 0;
                int y = -1;
                int count = 0;
                int len = zs.length();
                while (x < str.length()) {
                        y = sb.indexOf(zs,x);
                        if(y != -1) {
                                count++;
                                x = len+y;
                        }else{
                                break;
                        }
                }
                System.out.println("子串在字符串中出现的次数为"+count+"次");
        }
}

2 个回复

倒序浏览
不错,万变不离其宗! 都是使用indexOf方法
回复 使用道具 举报
可以改进下:
import java.util.Scanner;
public class Test_String {
     public static void main(String[] args) {
           Scanner sc = new Scanner(System.in);
           System.out.println("请输入一串字符:");
           //大串
           String maxStr = sc.nextLine();
           System.out.println("请输入子串");
           //小串
           String minStr = sc.nextLine();
           //定义计数器变量
            int count = 0;
           //定义索引
            int index = 0;
            //定义循环,判断小串是否在大串中出现
            while((index = maxStr.indexOf(minStr)) != -1) {
            //计数器自增
            count++;         
            maxStr = maxStr.substring(index + minStr.length());
             }
         System.out.println(count);
       }
}

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马