今天是来到黑马程序员第九天,第八天时候老师布置的作业如下
分析以下需求,并用代码实现
1.键盘录入一个大字符串,再录入一个小字符串
2.统计小字符串在大字符串中出现的次数
3.代码运行打印格式:
请输入大字符串:woaiheima,heimabutongyubaima,wulunheimahaishibaima,zhaodaogongzuojiushihaoma
请输入小字符串:heima
大字符串变为字符数组,五个字符的数组组成字符串,与小字符串比较
控制台输出:共出现3次
分析:根据所学知识,键盘输入使用Scanner类通过new一个sc对象出来。要统计大字符串中小字符串出现的次数。我是这么想的,把大字符串转化为字符数组,然后把每个字符数组元素加空字符串以此类推直至新的字符串与后面的字符串等长为止,然后进行判断。代码如下
package demo2; import java.util.Scanner; /*请输入大字符串:woaiheima,heimabutongyubaima,wulunheimahaishibaima,zhaodaogongzuojiushihaoma 请输入小字符串:heima 共出现3次*/ public class Demo2 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("输入大字符串"); String big = sc.next(); System.out.println("输入小字符串"); String small = sc.next(); char[] chBig = big.toCharArray(); System.out.println(chBig.length); int count = 0; String nwe = ""; for (int i = 0; i < chBig.length - small.length(); i++) { for (int t = 0; t < small.length(); t++) { nwe += chBig[t + i]; } System.out.println(nwe); if (nwe.equals(small)) { count++; nwe = ""; } else { nwe = ""; } } System.out.println("共出现" + count + "次"); } }
代码最开始出现了数组越界,以及字符数组转到字符串错误,
ps1:字符数组转字符串用Arrays.toString方法时候发现字符串是每个字符左右都有[]的,后来想到任何类型加空字符串都是字符串,所以才有了接下来的想法。虽然这个程序的思想很傻,但是却是我第一时间想到的。
ps2:最开始思考时候想到了数组越界的问题,因为当大字符串走到倒数几个时候,也就是与小字符串等长,那个时候字符数组再往后加字符,就会加到数组长度外面,也就是数组越界,后来写着写着忘了这一点。今天找了半个小时的bug终于出来了,特此来发博。希望我的想法能够给你一点点提示。同时也告诫自己有什么想法一定要写下来,不能盲目求快。切记欲速则不达。