String类型典型题目(一)

这篇博客探讨了字符串处理中的常见问题,包括空指针异常、接口操作、字符计数、字节数组转换、数字求和及排序等。通过具体的编程题目,展示了在Java和Python中如何解决这些问题。

出现空指针异常-----对象的地址为null的时候,表示的空指针异常。ACD
在这里插入图片描述
接口中存储了Object的相关信息和资源,操作越来越像类的操作:

给定字符串,输出每个字符出现的次数一

private static void test04() {
        //统计字符出现的次数:
        //曲线救国,标志位的状态
        //
        String str="asdjasd8341sdf";
        //提供标志位,进行分类的的状态
        boolean[] bb = new boolean[str.length()];
        //给数组元素进行初始化
        //ture代表的是未统计的   false   代表已经统计
        for (int i = 0; i < bb.length; i++) {
            bb[i]=true;
        }
        //遍历字符串
        for (int i = 0; i <str.length(); i++) {
            //判断每个字符的状态
            if (bb[i]){
                //如果进了判断说明未统计
                char c = str.charAt(i);
                int count=1;
                //遍历后续字符元素
                for (int j = i+1; j <str.length() ; j++) {
                    if (str.charAt(j)==c){
                            //改变后续元素的状态,进行后续遍历后的元素进行叠加,每重新一个进入
                            //进入判断就进行累加的次数
                        bb[j]=false;
                        //计数
                        count++;
                    }
                }
                System.out.println(c+"字符出现的次数:"+count);
            }
        }
    }

给定字符串,输出每个字符出现的次数二

private static void test4() {
        //4.给定字符串,输出每个字符出现的次数(晚自习)

        //给定固定的字符串
        String str="adabasfka87329489";

        int[] arr = new int[256];
        for (int i = 0; i <str.length() ; i++) {
            char c = str.charAt(i);
            arr[c]++; //arr[97]++;
        }

        for (int i = 0; i < arr.length; i++) {

            if (arr[i]!=0){
                System.out.println((char)i+"出现次数:"+arr[i]);
            }


        }

//获取字符串第一个字符,获取的是第一个字符的所有下标

 private static void test004() {
        String str="asdagklsgja8023";
        //获取字符串第一个字符,获取的是第一个字符的所有下标
        char c = str.toCharArray()[0];
        //提供下标
        int index=0;
        while(index!=str.length()){
            //返回第一次出现的下标值
            index = str.indexOf(c, index);
            //判断下标是-1
            if (index!=-1){
                System.out.println(c+"出现的位置:"+index++);
            }else {
                break;
            }
        }
    }

6.给定字符串String str=“订外卖";,转成字节数组根据字节数组的部分内容转成新的字符串对

private static void test06() {
        String str="定外卖";
        byte[] bs = str.getBytes();
        //给字节数
        int n=7;
        //将字节数组部分内容转成字符创对象
        String s = new String(bs, 0, n);
        //代表的是最后一个字符是否相等于原先字符的最后一个字符
        if (s.charAt(s.length()-1)!=str.charAt(s.length()-1)){
            //进了判断说明出现?
            char[] chars = s.toCharArray();
            //新字符串转换成字符数组
            new String(chars,0,s.length()-1);
        }
        System.out.println(s);

    }

.给定字符串,对字符串中的数字进行求和

 private static void test2() {
        //2.给定字符串,对字符串中的数字进行求和
        //定义给定的字符串
        String str="324jksdfha";
        int sum=0;
        //遍历字符串中的字符
        for (int i = 0; i < str.length(); i++) {
            char c = str.charAt(i);
            //进行数字的提取
            if (c<='9'&&c>='0'){
                //判定数字,如果是数字就进行累计
                sum+=(c-'0');
            }
        }
        System.out.println("总数:"+sum);

    }

1.给定字符串,返回字符串中小写英文字母、数字以及其他字符出现的个数

 private static void test1() {
        // 1.给定字符串,返回字符串中小写英文字母、数字以及其他字符出现的个数
        //1.给定字符串str
        String str="asdjaksfa72491401==1=;/.,";
        int x=0;
        int y=0;
        int z=0;
        //2.字符串转换成字节数组
        for (int i = 0; i < str.length(); i++) {
            char c = str.charAt(i);
            //2.1进行判断英文字母和数字,以及其他字符个数
            //2.2 统计变量进行每个字符的统计
            if(c<='z'&&c>='a'){
                //小写字母的容纳
                x++;
            }
            if (c<='9'&&c>='0'){
                //数字的个数容纳
                y++;
            }
        }
        //3.打印输出
        System.out.println("英文字母:"+x+"\t"+"数字:"+y+"\t"+"其他字符:"+((str.length()-x)-y)+"\t");
    }

3.给定字符串,对(获取)字符串中数字进行排序

    private static void test3() {
        //3.给定字符串,对(获取)字符串中数字进行排序
        //给定字符串
        String str="q89rudfa90923rsac674nsa";
        char[] cs = new char[str.length()];
        int count=0;
        //进行字符串的遍历---查找里面的数字
        for (int i = 0; i < str.length(); i++) {
            char c = str.charAt(i);
            if (c<='9'&&c>='0'){
                //将里面的数字放置新的容器,注意二者的下标的值是不一样的,注意区分下标的值
                cs[count++]=c;
            }
        }
        //进行容器的缩容---排序---数组的长度就是str.length()--但是真正的数据的长度数count
        cs=Arrays.copyOf(cs,count);//--进行数组的重定向
        Arrays.sort(cs);
        //打印数组
        System.out.println(Arrays.toString(cs));

    }

5.给定字符串数组,根据冒泡来进行排序(compareTo 晚自习)
String[] ss={“abc”,“def”,“ab”,“asf”,“bas”,“acb”};

    private static void test5() {
        //5.给定字符串数组,根据冒泡来进行排序(compareTo    晚自习)
        String[] str={"sda","sdf","gsq","qwye","gsdjg"};
        //进行遍历对于数组
        for (int i = 0; i < str.length; i++) {

            for (int j = i+1; j <str.length-i-1; j++) {
                //比较大小----交换元素---冒泡
                if (str[i].compareTo(str[j])>0){//正数,表示前面大于后面
                    //进行交换
                    String temp=str[i];
                    str[i]=str[j];
                    str[j]=temp;
                }
            }
        }
        //进行排序输出
        System.out.println(Arrays.toString(str));





    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值