java字符串中查找单个字符(两种方法实现)

2021-10-19 00:00:00 字符串 字符 两种

这是利用单个字符的比较方式,通过循环依次去比较字符串的所有字符:

//用于查找输入字符串的字符
        Scanner sycin = new Scanner(System.in);
        System.out.println("请输入你的英文名字:");
        String name;//记住这个String开头的S一定要大写,不能小写否则没有用
        name = sycin.next();//输入英文名字
        System.out.println("接下来将请输入你想查看你的名字里面是否包含输入字母,并且会统计出现的位置以及次数:");
        System.out.println("请输入想要查找的字母:");
        char charo;//定义字符
        charo = sycin.next().charAt(0);//这个用于输入单个字符,接收单个字符
        System.out.println("你想要查找的字母为:");
        System.out.println(charo);
       int lage=0;
        for (int i=0;i<name.length();i++){
            char ch= name.charAt(i);//依次获取字符串name中的字符,利用charAt()下标来依次输出字符串的单个字符,下标从0开始
            if (ch==charo){//判断是否相等
                lage++;//
                System.out.println("I的位置分别是:"+(i+1));//用于输出所查找字符在字符串中的位置
            }
        }
if (lage>0){
    System.out.println("在字符串你所查找的字符总数个数为:");
    System.out.println(lage);//输出最后在字符串中,有多少个想要查找的字符串
}
else {
    System.out.println("你输入的字符串中不包含你想查找的字符!");

我们可以利用indexOf方法实现在字符串中查找单个字符:

以下是代码:

//用于查找输入字符串的字符
        Scanner sycin = new Scanner(System.in);
        System.out.println("请输入你的英文名字:");
        String name;//记住这个String开头的S一定要大写,不能小写否则没有用
        name = sycin.next();//输入英文名字
        System.out.println("接下来将请输入你想查看你的名字里面是否包含输入字母,并且会统计出现的位置以及次数:");
        System.out.println("请输入想要查找的字母:");
        char charo;//定义字符
        charo = sycin.next().charAt(0);//这个用于输入单个字符,接收单个字符
        System.out.println("你想要查找的字母为:");
        System.out.println(charo);
 int count =0;
        int flag  = -1;
        while (true)
        {
            flag=name.indexOf(charo,flag+1);//从字符串的 flag+1 位置开始查找字符charo
            if (flag<0)
            {
                break;
            }
          else{
            System.out.println("所查找字母的位置是: "+(flag+1));//输出查找字符在字符串的位置,下标从0开始,我们加1更加直观。
            count++;
        }

        }
System.out.println("查找字母一共出现的次数是:"+count);

indexof方法是从字符串查找某个字符,并且返回字符在字符串中第一次出现的下标。

上面的代码让循环永远为真,最重要的是让flag赋值为-1,当indexof方法在字符串查找到第一个字符时,会返回它的位置,然后赋值给flag,然后根据if判断,flag大于0,就会执行打印出查找字符在字符串中出现的位置,并且让统计次数的变量加1,然后又会执行上面的indexof方法,只不过这次的查找位置是从上一个查找出来的字符的下标的下一个开始,经过循环就会找出在字符串是否存在要查找的字符,并且打印出它们各自的位置。

如果我们把flag赋值为0的话,就会进入死循环。一直重复查找字符串的字符出现的第一个位置。

上面那个flag的赋值,不是固定的,只要其中的原理相同就可以,比如可以像下面这样:

 int count =0;
        int flag  = 0;
        while (true)
    {
      flag=flag+1;//利用这个语句,可以跳过上一次查找到的字符的位置,不会陷入死循环
            flag=name.indexOf(charo,flag);//从字符串的 flag+1 位置开始查找字符charo
            if (flag<0)
            {
                break;
            }
            else{
                System.out.println("所查找字母的位置是: "+(flag+1));//输出查找字符在字符串的位置,下标从0开始,我们加1更加直观。
                count++;
            }

        }
        System.out.println("查找字母一共出现的次数是:"+count);

只要让flag在第一次查找到字符的时候,然后进行下一次查找的时候,开始查找的位置是从第一次字符出现的下标的下一个位置开始查找就可以。

    原文作者:小天的编程
    原文地址: https://blog.csdn.net/m0_57035799/article/details/120573306
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。

相关文章