本人菜鸟
判断一个字符在字符串中出现的次数,
连续出现算一次
如fdgfdfffffffffdff 出现的次数:4
// 接收字符串
System.out.println("请输入一个字符串:");
Scanner input = new Scanner(System.in);
String str1 = input.next();
// 将字符串转为字符数组
char[] ch = str1.toCharArray();
// 接收需查找的字符
System.out.println("请输入一个查找的字符:");
Scanner inputstr = new Scanner(System.in);
char input2 = inputstr.next().charAt(0);
int num = 0;
for (int i = 0; i < ch.length +1 ; i++) {
if (input2 == ch[i] || input2 != ch[i-1]) {
num++;
}
}
System.out.println("num:" + num);
在字符数组中遍历的时候,,for循环中的i < ch.length 时,如果是需要查找的字符在字符串中最后一位,那就会越界
如果是 i < ch.length - 1 就不会越界,但是,最后一个就不会遍历到
下标从0开始遍历,到 ch.length-1正好遍历完,改成下面这正写法
for (int i = 0; i < ch.length ; i++) {
if (input2 == ch[i] || input2 != ch[i-1]) {
num++;
}
}
你确定你这个如果要查找的字符在第一位不会出错吗。。。
i < ch.length - 1是对的,最后一个可以遍历到,数组从0开始的,不然你吧int i=0 写为 int i=1
//没看里面的内容
for (int i = 1 i < ch.length ; i++) {
if (input2 == ch[i] || input2 != ch[i-1]) {
num++;
}
}
var str = 'fdgfdfffffffffdf';
var j=0
for(var i=0;i<str.length;i++){
if(str[i]=='f'&&str[i+1]!='f'){
j++;
}
}
console.log(j);
var str = 'fdgfdfffffffffdf';
var c='f';
var pattern=new RegExp(c+"+","g");
var num=str.match(pattern).length;
console.log(num);