题目如下:
JAVA马士兵 常用类 87课 String类
编写一个方法,输出在一个字符串中,制定字符串出现的次数
以下是我自己根据这个作业写的代码:
public class Test {
public static void main(String[] args) {
int sum = 0;
Scanner input = new Scanner(System.in);
System.out.println("请输入需要被检索的字符串");
String s = new String(input.next());
System.out.println(s);
System.out.println("请输入要放进去检查的小字符串");
String w = new String(input.next());
System.out.println(w);
for (int i = 0; i < s.length(); i++) {
if (s.indexOf(w, i) != -1) {
sum++;
s = s.substring(s.indexOf(w,i));
} else {
break;
}
}
System.out.println(sum);
}
}
这段代码查其他的字符串一般问题不大,但是根据马士兵老师上课的案例,他查的是字符串
sunjavahpjavaokjavajjavahahajavajavagoodjava
马士兵老师上课的源代码是这样的:
这一段字符串当中有7个java
我查出来是6个
我想问,到底我代码里面哪里不对呢?为什么查出来跟他有差别
for循环内的正确写法应该时这样
indexOf 方法:
第二个参数为从字符串哪里开始找。
在你的方法中,每次循环都截取字符串后边为新的字符串,因此应该从index为0的位置找起。
如果用循环次数i为位置进行查找,则会漏掉一些符合条件的字符