Java中的String字符串练习

目录


01-用户登录

package com.xiaonan.exercise06;

import java.util.Scanner;

public class Demo01 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        //特别注意 next的字符串是new出来的
        //String s = sc.next();
        //以后想要比较字符串的内容  就必须要使用String里的方法 equal 或者equal...(忽略字母的大小写)
        String id = "莫华南";
        String idCode = "Aa123456789";
        //一共三次机会
        int flag = 3;
        for (int i = 0; i < 3; i++) {
            System.out.println("请输入您的id");
            String userId = sc.next();
            System.out.println("请输入您的密码");
            ///String userIdCode = sc.next();
            String userIdCode = sc.next();
            //验证id 和密码
            if(id.equals(userId) && idCode.equals(userIdCode)){
                System.out.println("登录成功!");
                break;
            }else if(flag==1){
                System.out.println("登录失败,账户被锁定");
            }else{
                System.out.println("您的id或者密码错误,请重新输入"+"剩下("+(--flag)+")次机会");
                continue;
            }
        }
    }
}

02-遍历字符串并统计字符个数

package com.xiaonan.exercise06;

import java.util.Scanner;

public class Demo02 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        //键盘录入一个字符串
        String s = sc.nextLine();
        //遍历字符串
        // 统计大写字母的个数
        int bigLetterCount = 0;
        // 统计小写字母的个数
        int smallLetterCount = 0;
        // 统计数字字符的个数
        int dightCount = 0;
        for (int i = 0; i < s.length(); i++) {
            //s.length() 这个是方法 计算字符串的长度
            //s.charAt(int index) 这个也是方法 index是字符串的索引 charAt(int index) 拿出字符串里的每一个字符
            char c = s.charAt(i);
            if(c>='A' && c<='Z'){
                //char类型的变量 在参与运算的时候 自动类型提升为int 查询ASCII表
                bigLetterCount++;
            }else if(c>='a' && c<='z'){
                smallLetterCount++;
            }else if(c>='0' && c<='9'){
                dightCount++;
            }
        }
        //输出
        System.out.println(bigLetterCount+","+smallLetterCount+","+dightCount);
    }
}

03-字符串拼接

package com.xiaonan.exercise06;

public class Demo03 {
    public static void main(String[] args) {
        //定义一个数组
        int[] arr = {1, 2, 3, 4, 5, 6};
        String s = jointString(arr);
        //输出打印
        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            System.out.print(c);
        }
        System.out.println();

    }

    //拼接字符串
    public static String jointString(int[] arr) {
        //先加一个 判断数组是否为空
        if (arr == null) {
            return "";
        }
        // 判断数组长度是否为0
        if (arr.length == 0) {
            return "[]";
        }
        String s = "[";
        for (int i = 0; i < arr.length; i++) {
            //解释
            /**
             * 在Java中,当一个字符串与其他类型的数据进行连接操作时,Java会自动将其他类型的数据转换为字符串。
             * 这个过程称为字符串的拼接或字符串的连接。
             *
             * 在代码中,表达式s = s + 12;中,整数12会自动转换为字符串"12",
             * 然后与字符串s连接在一起,形成新的字符串"[12"。
             */
            if(i==arr.length-1){
                s = s + arr[i];
            }else{
                s = s + arr[i] +",";
            }
        }
        s = s + ']';
        return s;
    }
}

04-字符串反转

package com.xiaonan.exercise06;

public class Demo04 {
    public static void main(String[] args) {
        String result = reverser("123456789");
        System.out.println(result);
    }

    //1. 反转字符串
    public static String reverser(String str){
        //定义一个字符串
        String result = "";
        for (int i = str.length()-1; i >= 0; i--) {
            char c = str.charAt(i);
            result = result + c;
        }

        return result;
    }



}

注意点

toCharArray() 是Java中的一个方法,它用于将字符串转换为字符数组。

方法签名如下:

public char[] toCharArray()

该方法返回一个新的字符数组,其中包含了字符串中的所有字符。每个字符都被存储在数组的一个元素中,顺序与字符串中的顺序相同。

这个方法可以用于许多情况,例如:

  1. 遍历字符串中的每个字符:通过将字符串转换为字符数组,您可以使用循环来遍历并处理每个字符。

  2. 修改字符串中的字符:字符串是不可变的,即不能直接修改字符串中的某个字符。但是,如果您将字符串转换为字符数组,您可以修改字符数组中的元素,然后再将其转换回字符串。

以下是一个使用 toCharArray() 方法的示例:

String str = "Hello";
char[] charArray = str.toCharArray();

// 遍历字符数组
for (char c : charArray) {
    System.out.println(c);
}

// 修改字符数组中的元素
charArray[0] = 'h';

// 将字符数组转换回字符串
String modifiedStr = new String(charArray);
System.out.println(modifiedStr);

输出结果:

H
e
l
l
o
hello

总之,toCharArray() 方法是将字符串转换为字符数组的一种方便的方式,它可以在需要处理单个字符的情况下提供更灵活的操作。

05-金额转化(简单)

package com.xiaonan.exercise06;

import java.util.Scanner;

public class Demo05 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入您的金额");
        //定义一个变量 存储金额
        int money;
        // 1. 判断金额的合法性 最大为7位数字
        while (true) {
            //重复使用户输入
            money = sc.nextInt();
            if (money >= 0 && money <= 9999999) {
                break;
            } else {
                System.out.println("金额无效,请重新输入");
            }
        }

        //定义 存储大写字符串
        String capitalStr = "";

        //2. 转化数字
        while (true) {
            //拿个位
            int unit = money % 10;
            String unitStr = capital(unit);
            //丢个位  这里是从 money 录入的💴里丢
            money /= 10;

            // 注意点1: 注意拼接的前后的顺序
            capitalStr = unitStr + capitalStr;

            //结束循环  这里是当 money==0 时 才退出循环
            if (money == 0) {
                break;
            }
        }

        //3. 前面补0
        //补0的个数
        int count = 7 - capitalStr.length();
        for (int i = 1; i <= count; i++) {
            // 是前面 所以要拼接的顺序改变一下
            capitalStr = "零" + capitalStr;
        }

        //4. 插入单位
        //定义一个数组表示单位
        String[] str = {"佰","拾","万","仟","佰","拾","元"};
        //定义一个字符串 存储结果
        String result = "";
        for (int i = 0; i < str.length; i++) {
            //得到原来的字符串的每一位 并赋值
            result = result + capitalStr.charAt(i) + str[i];
        }
        //输出结果
        System.out.println(result);
    }

    //转化为数字的大写
    public static String capital(int number) {

        //定义一个大写数字的字符串数组
        String[] str = {"零","壹", "贰", "叁", "肆", "伍", "陆", "柒", "玐", "玖"};
        //直接返还
        return str[number];
    }
}

代码解释:

这段代码是一个Java程序,用于将用户输入的金额转换为大写金额表示。

代码解释如下:

  1. 导入必要的类:

    import java.util.Scanner;

    这行代码导入了java.util.Scanner类,用于从用户输入中读取数据。

  2. 创建Scanner对象:

    Scanner sc = new Scanner(System.in);

    这行代码创建了一个Scanner对象,用于读取用户输入。

  3. 提示用户输入金额:

    System.out.println("请输入您的金额");

    这行代码打印出提示信息,要求用户输入金额。

  4. 判断金额的合法性:

    while (true) {
    money = sc.nextInt();
    if (money >= 0 && money <= 9999999) {
        break;
    } else {
        System.out.println("金额无效,请重新输入");
    }
    }

    这段代码使用一个无限循环,直到用户输入的金额合法(大于等于0且小于等于9999999)才跳出循环。如果金额无效,会打印错误提示信息。

  5. 定义存储大写金额的字符串:

    String capitalStr = "";
  6. 转化数字:

    while (true) {
    int unit = money % 10;
    String unitStr = capital(unit);
    money /= 10;
    capitalStr = unitStr + capitalStr;
    if (money == 0) {
        break;
    }
    }

    这段代码使用一个无限循环,将金额的每一位数字转换为对应的大写形式,并将其拼接到capitalStr字符串的前面。循环结束的条件是金额为0,即所有位数都处理完毕。

  7. 前面补0:

    int count = 7 - capitalStr.length();
    for (int i = 1; i <= count; i++) {
    capitalStr = "零" + capitalStr;
    }

    这段代码计算需要在大写金额前面补0的个数,并使用循环在capitalStr字符串的前面添加相应数量的”零”字符。

  8. 插入单位:

    String[] str = {"佰","拾","万","仟","佰","拾","元"};
    String result = "";
    for (int i = 0; i < str.length; i++) {
    result = result + capitalStr.charAt(i) + str[i];
    }

    这段代码定义了一个字符串数组str,其中存储了单位(佰、拾、万、仟、佰、拾、元)。然后使用循环,将大写金额的每一位字符和对应的单位字符拼接到result字符串中。

  9. 输出结果:

    System.out.println(result);

    最后,将结果打印出来,即用户输入金额的大写表示。

此代码实现了将用户输入的金额转换为大写金额的功能。

06-手机号屏蔽

package com.xiaonan.exercise06;

public class Demo06 {
    public static void main(String[] args) {
        //1. 定义一个手机号码
        String phoneNumber = "13112349468";
        //2. 截取前面的三位
        //substring(0,3) 代表前面的三位 包左不包右
        String start = phoneNumber.substring(0,3);
        //3. 截取后面的四位数字 包左不包右  从7(包括)到末尾 按字符串的下标
        String end = phoneNumber.substring(7);
        //4. 拼接
        String str = start + "****" + end;
        //5. 输出
        System.out.println(str);
    }
}

07-身份证号码查看

package com.xiaonan.exercise06;

import java.util.Scanner;

public class Demo07 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入您的身份证号");
        //在while外定义 身份证号
        String idCard;
        while(true){
           idCard = sc.next();
            if(idCard.length()!=18){
                System.out.println("您输入的身份证号码有误,请重新输入");
            }else {
                System.out.println("输入成功");
                break;
            }
        }

        //1. 获取出生年月日
        String year = idCard.substring(6,10);
        String month = idCard.substring(10,12);
        String day = idCard.substring(12,14);
        //2. 获取性别
        String gender = idCard.substring(16,17);
        char c = gender.charAt(0);
        //这里的test的值为 ASCII码值 不是真正的"数字"
        //我要拿的是里面的之前存储的数字1,2 来计算 而不是拿数字对应的码值来计
        int test = (int)c;  //所以这是错的
        System.out.println("--------"+test);
        //**注意点1, 这里要转化**
        if((c-'0')%2==0){ // 判断奇偶数 判断的是 余数是否为0(偶数) 不为0(奇数)
            gender = "女";
        }else{
            gender = "男";
        }
        //3. 输出
        System.out.println("人物信息为");
        System.out.println(year+"年"+month+"月"+day+"日");
        System.out.println("性别为: "+gender);
    }
}

易错点:

**//2. 获取性别 String gender = idCard.substring(16,17); char c = gender.charAt(0); //这里的test的值为 ASCII码值 不是真正的”数字” //我要拿的是里面的之前存储的数字1,2 来计算 而不是拿数字对应的码值来计 int test = (int)c; //所以这是错的 System.out.println(“——–“+test); //注意点1, 这里要转化 if((c-‘0’)%2==0){ gender = “女”; }else{ gender = “男”; }

08-敏感词替换

package com.xiaonan.exercise06;

public class Demo08 {
    public static void main(String[] args) {
        String talk = "TMD,我CNM,Sb玩意莫华南MLGB,TMD,TMD";

        //1. 定义一个敏感词 数组(库)
        String[] arr = {"TMD","CNM","Sb","MLGB"};
        //2. 替换敏感词
        for (int i = 0; i < arr.length; i++) {
            talk = talk.replace(arr[i],"***");
            //方法原理 看输出的语句就知道了
            System.out.println(talk);

        }
        //3.输出
        System.out.println(talk);
    }
}

版权声明:本文为博主作者:Java520小黄原创文章,版权归属原作者,如果侵权,请联系我们删除!

原文链接:https://blog.csdn.net/2301_80142564/article/details/137058287

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
社会演员多的头像社会演员多普通用户
上一篇 2024年4月1日
下一篇 2024年4月1日

相关推荐