身份证信息查看
用到的函数是 substring(,) 这个函数截取中间的一段,包左不包右
比如substring(4,9)截取的字符串为索引4到8对应的子串。
substring(5) 表示截取索引为5到字符串结束的一段子串。
package test9;
/*身份证信息查看
* 7-14位:出生年月日
* 17位:性别(奇数男,偶数女)
* 人物信息为:出生年月日:XXXX年X月X日
* 性别为:男/女
*
* 难点:身份证号码中的索引
* 性别得到的是字符,要转为数字*/
public class checkID {
public static void main(String[]args) {
//1,定义一个字符串记录身份证号码
String id="140981198706260025";
//2.获取出年月日
String year=id.substring(6,10);//包左不包右
String month=id.substring(10,12);
String day=id.substring(12,14);
System.out.println("人物信息为:");
System.out.println("出生年月日:"+year+"年"+month+"月"+day+"日");
//3.获取性别
char gender=id.charAt(16);//'3'---3把字符变成数字
//利用ASCII码进行转换
/*'0'----->48
* '1'------->49
* ........
* '9'------->57
* */
int num=gender-48;
if(num%2==0) {
System.out.println("性别为:女");
}else {
System.out.println("性别为:男");
}
}
}
手机号码屏蔽
和上面的例子的思想和用到的函数方法一样
package test9;
public class PhoneNumberPB {
/*String substring (int beginIndex,int endIndex)截取
* 注意点:包头不包尾,包左不包右
* 只有返回值才是截取的小串
* 因为字符串本身不能发生变化
* String substring(int beginIndex)截取到末尾*/
public static void main(String[]args) {
//1.获取一个手机号码
String phoneNumber="11234567890";
//2.截取手机号码前面三位
String start=phoneNumber.substring(0,3);
//方法在截取时,只有返回值才是截取的效果,字符串本身不会发生改变
//3.截取手机号码后面四位
String end=phoneNumber.substring(7);
//4.拼接
String result=start+"****"+end;
//5.打印
System.out.println(result); //结果为112****7890
}
}
字符串反转输出
比如输入的是abc,输出的是cba,用到的是charAt(i)的函数
package test9;
/*
* 定义一个方法,实现字符串的反转键盘录入一个字符串,调用该方法后,在控制台输出结果
* 例如,键盘录入abc,输出结果cba*/
public class FanZhuan {
public static void main(String[]args){
String result=FanZhuan("abc"); //调用方法
System.out.println(result);
}
//1.我要干嘛---需要一个字符串
//2.我干这件事,需要什么才能完成
//3.调用处是否需要继续使用方法的结果---需要结果进行输出
public static String FanZhuan(String str) {
//abc
String result="";
for(int i=str.length()-1;i>=0;i--) {
//i依次表示字符串中每一个字符的索引 倒着的
char c=str.charAt(i);
result=result+c;
}
return result;
}
}
用户登录
用到的是字符串比较函数 equals(),只有安全一样才会返回true,比较的是字符串的值,而不是地址值。
package test9;
import java.util.Scanner;
/*字符串练习----用户登录:
* 已知正确的用户名和密码,请用程序实现模拟用户登录
* 总共给三次机会,登录之后,给出相应的提示*/
public class Login {
public static void main(String[]args) {
//拆解读题法
//1.定义两个变量记录正确的用户名和密码
String rightUsername="zhangsan";
String rightPassword="123456";
for(int i=1;i<=3;i++) {
//2.键盘录入用户名和密码
Scanner sc=new Scanner(System.in);
System.out.println("请输入用户名");
String username=sc.next();
System.out.println("请输入密码");
String password=sc.next();
//3.比较
if(username.equals(rightUsername)&&password.equals(rightPassword)) {
System.out.println("用户登录成功");
break;
}else if(i==3){
System.out.println("您的账号"+username+"已被锁定,请联系客服人员");
}else {
System.out.println("用户登录失败,用户名或密码错误,您换剩下"+(3-i)+"次机会");
}
}
}
}
敏感词替换
用到的是字符串的replace(旧值,新值)的函数
package test9;
/*String replace(旧值,新值)替换
* 注意点:只有返回值才是替换之后的结果,因为字符串一旦初始化就不能改变*/
public class minGanCiTiHuan {
public static void main(String[]args) {
//1.获取到说的话
String talk="CNM你玩的真好,以后不要再玩了,TMD,SB";
//2.把里面的TMD替换为*****
//3.定义一个敏感词库,
String[]arr= {"TMD","CNM","SB","MLGB"};
//循环得到数组中的每一个敏感词,依次进行替换
for(int i=0;i<arr.length;i++) {
talk=talk.replace(arr[i], "***");
}
//3.打印结果
System.out.println(talk);
}
}
把指定数组拼接成一个字符串
package test9;
/*定义一个方法,把int数组中的数据按照指定的格式拼成一个字符串返回,调用该方法,并在控制台输出结果
* 例如:
* 数组为int[]arr=[1,2,3]
* 执行方法后的输出结果为:[1,2,3]*/
public class PingJie {
public static void main(String[]args) {
/*
* 1.我呀干嘛----遍历数组并把数组拼成一个字符串
* 2.做这件事需要遍历数组
* 3.做完这件事需要返回一个拼接好的字符串
* 如果调用处需要继续使用,那么必须返回
* 如果调用处不继续使用,那么可以返回也可以不返回。
**/
int[] arr= {1,2,3};
String str= arrToString(arr);
System.out.println(str);
}
public static String arrToString(int[]arr) {
if(arr==null) {
return""; //数组为空
}
if(arr.length==0) { //数组长度为0
return"[]";
}
String result="[";
//当代码执行到这里表示什么
//表示数组不是null,也不是长度为0的
for(int i=0;i<arr.length;i++) {
//i索引arr[i] 元素
if(i==arr.length-1) {
result=result+arr[i];
}else {
result=result+arr[i]+',';
}
}
return result+']'; //[123]
}
}
把字符串变成字符数组输出
用到的是charAt(i)这个方法
package test9;
/*定义一个方法,把int数组中的数据按照指定的格式拼成一个字符串返回,调用该方法,并在控制台输出结果
* 例如:
* 数组为int[]arr=[1,2,3]
* 执行方法后的输出结果为:[1,2,3]*/
public class PingJie {
public static void main(String[]args) {
/*
* 1.我呀干嘛----遍历数组并把数组拼成一个字符串
* 2.做这件事需要遍历数组
* 3.做完这件事需要返回一个拼接好的字符串
* 如果调用处需要继续使用,那么必须返回
* 如果调用处不继续使用,那么可以返回也可以不返回。
**/
int[] arr= {1,2,3};
String str= arrToString(arr);
System.out.println(str);
}
public static String arrToString(int[]arr) {
if(arr==null) {
return""; //数组为空
}
if(arr.length==0) { //数组长度为0
return"[]";
}
String result="[";
//当代码执行到这里表示什么
//表示数组不是null,也不是长度为0的
for(int i=0;i<arr.length;i++) {
//i索引arr[i] 元素
if(i==arr.length-1) {
result=result+arr[i];
}else {
result=result+arr[i]+',';
}
}
return result+']'; //[123]
}
}
统计输入的字符串中的大写字母,小写字母和数字的个数
用到的是charAt(i)函数,根据ASCII码值的范围来判断是大写字母是小写字母还是数字。
package test9;
import java.util.Scanner;
public class TongJi {
/*键盘录入一个字符串,统计该字符串中大写字母字符,小写字母字符,数字字符出现的次数*/
public static void main(String[]args) {
//1.键盘录入一个字符串
Scanner sc=new Scanner(System.in);
System.out.println("请输入一个字符串");
String str=sc.next();
//2.统计(计数器思想)
//定义三个计数器
int bigCount=0;
int smallCount=0;
int number=0;
for(int i=0;i<str.length();i++) {
char c=str.charAt(i);
//char在参与运算的时候,会自动转变为Int 类型
if(c>='A'&&c<='Z') {
bigCount++;
}else if(c>='a'&&c<='z') {
smallCount++;
}else if(c>='0'&&c<='9') {
//直接写0和9会出错
//因为是在ASCII码表中查找
number++;
}
}
//在遍历的过程中进行统计
//3.输出打印
System.out.println("小写字母有"+smallCount+"个");
System.out.println("大写字母有"+bigCount+"个");
System.out.println("数字有"+number+"个");
}
}
把阿拉伯数字的小写金额转变为大写汉字金额
用到的是charAt(i)方法
package test9;
import java.util.Scanner;
/*金额转换
* 把小写的金额转变为大写的金额*/
public class transform {
public static void main(String[]args) {
//1.键盘录入一个金额
Scanner sc=new Scanner(System.in);
int money;
while(true) {
System.out.println("请输入一个阿拉伯数字金额");
money=sc.nextInt();
//一开始做一个数据的校验
if(money>=0&&money<=9999999) {
break;
}else {
System.out.println("金额无效");
}
}
//定义一个变量用来表示钱的大写
String moneyStr="";
//2.得到money里面的每一位数字,再转成中文
while(true) {
//从右往左获取数据,因为右侧是数据的个位
int ge=money%10;
String capitalNumber=getCapitalNumber(ge);
//把转换之后的大写拼接到moneyStr当中
moneyStr=capitalNumber+moneyStr;
//去掉刚刚获得的数字
money=money/10;
//如果数字上的每一位全部获取了,那么money记录的就是0.循环结束
if(money==0) {
break;
}
}
//3.在前面补0,补齐七位
int count=7-moneyStr.length();
for(int i=0;i<count;i++) {
moneyStr="零"+moneyStr;
}
System.out.println(moneyStr);
//4.插入单位
String[]arr= {"佰","拾","万","千","佰","拾","元"};
//遍历moneyStr,然后把arr的单位插进去
String result="";
for(int i=0;i<moneyStr.length();i++) {
char c=moneyStr.charAt(i);
//把大写数字和单位拼接到result当中
result=result+c+arr[i];
}
//5.打印最终结果
System.out.println(result);
}
//定义一个方法把数字变成大写的中文
//1--壹
public static String getCapitalNumber(int number){
//定义数组,让数字跟大写的中文产生一个对应关系
String[]arr= {"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
//返回结果
return arr[number];
}
}