判断一个字符在字符串中出现的次数

本人菜鸟

判断一个字符在字符串中出现的次数,
连续出现算一次
如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 就不会越界,但是,最后一个就不会遍历到

6个回答

下标从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);

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问