public class top24 {
//下面来练习一下字符串的几种格式
public static void main(String[] args) {
//第一种写法
String s0="abc";
System.out.println(s0);
//第二种写法
String s1 = new String("abc");
System.out.println(s1);
//第三种创建字符串数组
char s2[]={'a','b','c'};//创建一个char类型的数据
String s3 =new String (s2);//将数据内容赋值给s3
System.out.println(s3);
//第四种 byte 方式
byte b[]={97,98,99};
String s4 = new String(b);
System.out.println(s4);//注意在使用byte的数据的时候转换成字符串他是转换的Asllc方式在展现出的
//下面来一个字符串比较方法
//现在展示第一种
//先定义俩字符串
String a1 = "abc";
String a2 = new String("abc");
//正常比较的时候可以看一下
System.out.println(a1=a2);//他的结果为false
//介绍一下equals
boolean bijiao1= a1.equals(a2);
System.out.println(bijiao1);//equals 是直接比较的字符串的值
//第二种equalsIgnoreCase
String x1 = "abc";
String x2 = new String("Abc");
boolean bijiao2= x1.equalsIgnoreCase(x2);//这个可以忽略大小写适用于验证码
System.out.println(bijiao2);
}
}
小练习 账户登录系统
import java.util.Scanner;
public class top25 {
//模拟用户登录账户密码,总公给三次机会,登录之后给出相应的提示
public static void main(String[] args) {
//先定义一个正确的账号密码
String rightUsername = "zhangsan";
String rightPassword = "123456";
//接下来开始判断,但是还得累计次数当不能超过三次 定义一个次数count
//int count = 0;
for(int count =0 ; count <3;count++){
//scanner交互输入账户密码
Scanner sc = new Scanner(System.in);
System.out.println("请输入您的账户");
String UserName = sc.next();
System.out.println("请输入您的密码");
String Password = sc.next();
if (UserName.equals(rightUsername) && Password.equals(rightPassword)) {
System.out.println("登录成功");
break;
} else if (UserName.equals(rightUsername)) {
System.out.println("您的密码输入错误");
} else if (Password.equals(rightPassword)) {
System.out.println("您的账号输入错误");
}
//超出三次机会直接提醒
if (count >=3) {
System.out.println("三次机会已过");
}
}
}
}
遍历字符串
import java.util.Scanner;
public class top26 {
public static void main(String[] args) {
//字符串遍历
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串");
//定义一个字符串
String str= sc.next();
//这个地方介绍一下charAt(0),用字符串来调用这个方法,他跟数组的用法一样,后面填写索引
char c = str.charAt(0);
System.out.println(c);
//所以可以尝试一下for循环,遍历字符串
//因为这个是在调用方法所以说只能是length+()。
for (int i = 0; i < str.length(); i++) {
System.out.println(str.charAt(i));
}
}
}
import java.util.Scanner;
public class top27 {
public static void main(String[] args) {
//键盘录入字符串,统计字符串中的大写字母出现几次,小写出现几次,数组出现几次
Scanner sc =new Scanner(System.in);
System.out.println("输入字符串");
String str = sc.next();
//定义三个变量统计次数
int BIGcount=0;
int mincount=0;
int numcount =0;
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
//这个地方会去查询aslla表实际上是在对 a =98 往上在作比较
if (c >='a' && c <= 'z'){
mincount= mincount +1;
//现在是在比较字符,都是通过assla表来进行判断的
}else if (c >='0' && c <='9'){
numcount= numcount+1;
}else if(c >='A' && c <='Z'){
BIGcount= BIGcount+1;
}
}
System.out.println("您的字符串是大写的偶"+BIGcount+"您的字符串是小写的偶"+mincount+"数字有"+numcount);
}
}
反转字符串
import java.util.Scanner;
public class top28 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("Enter a string: ");
String str = sc.nextLine();
System.out.println(stringTest(str));
}
public static String stringTest(String str) {
// 创建一个 StringBuilder 对象来存储反转后的字符串
StringBuilder reversed = new StringBuilder();
// 倒序遍历原始字符串,将每个字符添加到 StringBuilder 中
for (int i = str.length() - 1; i >= 0; i--) {
reversed.append(str.charAt(i));
}
// 将 StringBuilder 对象转换为 String 并返回
return reversed.toString();
}
}
金额转换题
import java.util.Scanner;
public class top29 {
public static void main(String[] args) {
//这一题来说一个整数传换成大写中文
Scanner sc = new Scanner(System.in);
//定义一个变量用来存储这个数字
int money = 0;
//得判断数字是否合法
//使用while如果不对就会继续重新输入
while (true) {
//请输入金额
System.out.println("请输入金额");
money = sc.nextInt();
if (money >= 0 && money <= 9999999) {
break;
} else {
System.out.println("金额的格式有问题");
}
}
System.out.println(money);
//得到money的每一位数字
String moneyStr = "";//这个变量用来接受拼接的大写字符串
while (true) {
int ge = money % 10;//这个就可以得到数字的各位,在之前的练习题里面有讲过类似的,假如这个数字为235 %10之后就之剩下了5
String CapitalNumber = getCapitalNumber(ge);//这个变量用来就是将每一次的ge都传递给getCapitalNumber方法并赋值给CapitalNumber
moneyStr = CapitalNumber + moneyStr;//将每次的 CapitalNumber的大写数字都传递给moneyStr 在加上moneyStr 拼接字符
//还有一个问题就是CapitalNumber要写在前面,举例
/*假如传递一个2135,5传递进来,此时moneyStr还是空的,现在moneyStr 就变成了伍
之后3在传递进来此时moneyStr已经变成了伍,让后传递的往前走,也就是叁,在进行拼接就是叁伍
以此类推,自己可以做一个小实验来证明一下这个
*/
//之后在假如这个数字还是235 再去去掉这个5,money在取出个为之后 ,就变成了23 在去继续去除
money = money / 10;
//如果money等于0的也是后也就全部取出了
if (money == 0) {
break;
}
}
//在前面补零
//定义一个变量用来存储需要补几个零
int count = 7 - moneyStr.length();//int最大就是7位
for (int i = 0; i < count; i++) {
moneyStr = "零" + moneyStr;
}
System.out.println(moneyStr);
//插入单位
//定义一个字符串用来存储最终效果
String result = "";
//定义一个数组
String arr[] = {"佰", "拾", "万", "千", "佰", "拾", "元"};
//利用循环来拼接
for (int i = 0; i < moneyStr.length(); i++) {
char c = moneyStr.charAt(i);//这个笔记之前有记过,就是将索引i 赋值给 char类型的c
result = result + c + arr[i];
}
System.out.println(result);
}
//定义一个方法用来吧数字变成中文大写
public static String getCapitalNumber(int number) {
//定义一个数组产生跟数字跟中文数字之间的关系
String arr[] = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "扒", "玖"};
return arr[number];//方法在调用的时候输入这个number数字来对应数组内的索引,0就是对应零,以此类推
}
}
手机号隐藏
public class top30 {
public static void main(String[] args) {
//介绍一下substaring,隐藏手机号中间四位
//先定义一个手机号码
String phoneNumber = "15127988973";
//截取一下前三位
String start= phoneNumber.substring(0,3);//这个方法是有头无尾的!切记0索引开始的,就是截取0到2索引的,在将他赋值给一个新的变量
System.out.println(start);
//截取后四位
String stop = phoneNumber.substring(7);//当在只使用一个数字的时候就会一直截取你定位的索引一直到末尾
System.out.println(stop);
//在拼接起来
String result = start + "****"+ stop;
System.out.println(result);
}
}
身份证信息获取
public class top31 {
//要求根据身份证号打印一个人的信息,出生日期,性别
public static void main(String[] args) {
//先定义一个字符串用来存储身份证号
String id = "130527200306111217";
//使用substaring来截取字符串信息
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+"日");
//再来获取性别
char gender = id.charAt(16);
//将字符串来转换成int,来判断是男是女
//这个地方利用ASCII来做转换
//0在表中代表的是48
int number = gender - 48;
if (number % 2 ==0){
System.out.println("性别是女");
}else {System.out.println("性别是男");}
}
}
敏感屏蔽
import java.time.temporal.TemporalAccessor;
public class top32 {
//介绍一个新的方法replace,字符串替换
public static void main(String[] args) {
String talk = "你游戏玩的太好了,MLGB,TMD";
//把后面的字给他替换掉
String result = talk.replace("tmd", "***");//前面为替换之前,后面为替换之后
System.out.println(result);
//再来扩展一个,定义一个敏感词的词库
String arr[] = {"TMD", "CNM", "MLGB"};
//再来写一个循环让他们都替换掉
for (int i = 0; i < arr.length; i++) {
talk = talk.replace(arr[i], "***");//将每一个跟字符串数组内对应的敏感词利用循环都给替换掉
}
System.out.println(talk);
}
}