Java 字符串的小练习

身份证信息查看
 

用到的函数是 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];
     }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Komorebi_9999

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值