目录
Java中的String字符串练习
01-用户登录
02-遍历字符串并统计字符个数
03-字符串拼接
04-字符串反转
注意点
05-金额转化(简单)
代码解释:
06-手机号屏蔽
07-身份证号码查看
易错点:
08-敏感词替换
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()
该方法返回一个新的字符数组,其中包含了字符串中的所有字符。每个字符都被存储在数组的一个元素中,顺序与字符串中的顺序相同。
这个方法可以用于许多情况,例如:
遍历字符串中的每个字符:通过将字符串转换为字符数组,您可以使用循环来遍历并处理每个字符。
修改字符串中的字符:字符串是不可变的,即不能直接修改字符串中的某个字符。但是,如果您将字符串转换为字符数组,您可以修改字符数组中的元素,然后再将其转换回字符串。
以下是一个使用 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);
输出结果:
Hellohello
总之,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程序,用于将用户输入的金额转换为大写金额表示。
代码解释如下:
导入必要的类:
import java.util.Scanner;
这行代码导入了java.util.Scanner
类,用于从用户输入中读取数据。
创建Scanner
对象:
Scanner sc = new Scanner(System.in);
这行代码创建了一个Scanner
对象,用于读取用户输入。
提示用户输入金额:
System.out.println("请输入您的金额");
这行代码打印出提示信息,要求用户输入金额。
判断金额的合法性:
while (true) {money = sc.nextInt();if (money >= 0 && money <= 9999999) { break;} else { System.out.println("金额无效,请重新输入");}}
这段代码使用一个无限循环,直到用户输入的金额合法(大于等于0且小于等于9999999)才跳出循环。如果金额无效,会打印错误提示信息。
定义存储大写金额的字符串:
String capitalStr = "";
转化数字:
while (true) {int unit = money % 10;String unitStr = capital(unit);money /= 10;capitalStr = unitStr + capitalStr;if (money == 0) { break;}}
这段代码使用一个无限循环,将金额的每一位数字转换为对应的大写形式,并将其拼接到capitalStr
字符串的前面。循环结束的条件是金额为0,即所有位数都处理完毕。
前面补0:
int count = 7 - capitalStr.length();for (int i = 1; i <= count; i++) {capitalStr = "零" + capitalStr;}
这段代码计算需要在大写金额前面补0的个数,并使用循环在capitalStr
字符串的前面添加相应数量的"零"字符。
插入单位:
String[] str = {"佰","拾","万","仟","佰","拾","元"};String result = "";for (int i = 0; i < str.length; i++) {result = result + capitalStr.charAt(i) + str[i];}
这段代码定义了一个字符串数组str
,其中存储了单位(佰、拾、万、仟、佰、拾、元)。然后使用循环,将大写金额的每一位字符和对应的单位字符拼接到result
字符串中。
输出结果:
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); }}