1、理论知识

创建String 对象的两种方法:

一般情况下建议使用第一种赋值方式,简单又简约内存

“==”比较的是什么?如下所示:

目前已经有设定好的方法,上面这个可以用于用户的密码验证;

下面这个可以用于验证码的验证

2、练习

(1)用户登录

解题思路:首先需要创建一个用户类,之后在测试类中先初始化一个对象,包括用户名和密码的属性。之后设置一个布尔值和一个计数值,使用while语句,只有当计数值<3并且布尔值为表示的数为true才执行while里边的代码。while里边先键盘输入用户名和密码,只有当用户名和密码都输入正确时,才输出登录正确的字样并且将布尔值设置为true,否则将显示登陆错误的字样并且计数值+1。之后再进行if语句,根据布尔值输出登录错误,已超过3次的字样。

代码如下:

用户类:

package com.xzhao.test.cat;

public class Admin {
    private String name;
    private String password;

    public Admin() {
    }

    public Admin(String name, String password) {
        this.name = name;
        this.password = password;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

测试类:
package com.xzhao.test.cat;

import java.util.Scanner;

public class AdminTest {
    public static void main(String[] args) {
        Admin admin = new Admin();//初始化一个用户名和密码
        admin.setName("admin");
        admin.setPassword("123456");

        Scanner sc = new Scanner(System.in);//键盘输入类
        boolean flag = false;//设定一个布尔值的作用是当登录成功之后跳出循环
        int count=0;//次数为0

        while(count<3&&!flag){//只有当次数超过3次且flag为真时执行以下内容
            System.out.println("请用户输入用户名:");//键盘输入用户名和密码
            String name = sc.nextLine();
            System.out.println("请用户输入密码:");
            String password = sc.nextLine();

            if(name.equals(admin.getName())&&password.equals(admin.getPassword())){
                System.out.println("登录成功");
                flag = true;
            }
            else{
                System.out.println("用户名或密码错误");
                count++;
            }
        }
        if(!flag){
            System.out.println("登录失败,3次错误");
        }
    }
}

结果如下:

(2)遍历字符串

理论知识:

解题思路:首先使用键盘输入的代码,之后使用for循环遍历输入的字符串并输出

代码如下:

package com.xzhao.test.cat;

import java.util.Scanner;

public class bianli {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个字符串");
        String a = sc.nextLine();//从键盘输入字符串,使用nextLine就算有空格,也会都输出;如果只有next遇到空格就当作输出

        for(int i=0;i<a.length();i++){//对字符串进行遍历
            System.out.println(a.charAt(i));//输出字符串中的每个字符
        }
    }
}

结果如下:

(3)统计字符次数

解题思路:在上边的基础上,加一个if语句,只要满足条件就数量加1

代码如下:

package com.xzhao.test.cat;

import java.util.Scanner;

public class bianli {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个字符串");
        String a = sc.nextLine();//从键盘输入字符串,使用nextLine就算有空格,也会都输出;如果只有next遇到空格就当作输出

        int daxie=0;
        int xiaoxie=0;
        int shuzi=0;
        for(int i=0;i<a.length();i++){
            if(a.charAt(i)>='A'&&a.charAt(i)<='Z'){
                daxie++;
            }
            else if(a.charAt(i)>='a'&&a.charAt(i)<='z'){
                xiaoxie ++;
            }
            else if(a.charAt(i)>='0'&&a.charAt(i)<='9'){
                shuzi++;
            }
        }
        System.out.println("这个字符串中包含"+daxie+"个大写字母"+','+xiaoxie+"个小写字母"+','+shuzi+"个数字");

    }
}

结果如下:

(4)拼接字符串

解题思路:之前说过类似的,这里不细说了

代码如下:

package com.xzhao.test.cat;

public class bianli {
    public static void main(String[] args) {

        int[] arr={1,2,3};//定义一个数组
        String p=pinjie(arr);
        System.out.println(p);
 }
    public static String pinjie(int[] a){
        if(a.length!=0){
            String str="[";
            for(int i=0;i<a.length;i++){
                if(i==a.length-1){
                    str+=a[i]+"]";
                }else{
                    str+=a[i]+", ";
                }
            }
            return str;//定义一个方法,用来拼接数组的内容
        }
        else{
            return "[]";
        }
    }
}

结果如下:

(5)反转字符串

解题思路:新建一个方法,使用倒序,将数据进行输出,倒着去遍历,然后输出结果

代码如下:

package com.xzhao.test.cat;

import java.util.Scanner;

public class bianli {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        System.out.println("请输入字符串:");
        String str = sc.nextLine();
        System.out.println("反转后的字符串为:");
        fanzhuan(str);

}

public static String fanzhuan(String arr){
    for (int i = arr.length()-1; i >= 0; i--) {
        System.out.print(arr.charAt(i));
    }
    return arr;
}

结果如下:

(6)金额转换

解题思路:根据下面这个图可以一步步完善功能。先实现键盘输入一个数字————因为输入的范围是0-9999999,所以如果超出这个范围,直接提示输入不对,重新输入!——得到输入数字一共有几位之后,将数组中剩余的位置置0——之后建立一个方法将数字转换为大写汉字(我使用的是switch,视频作者是用新建了一个数组存放)——之后输出这个数组的汉字数组——之后再使用switch将数组中每个元素后分别加单位(譬如:元、拾、佰等)

代码如下:

package com.xzhao.test.cat;

import java.util.Scanner;

public class bianli {
    public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
    int n ;
    while(true){//设置只有输入的金额正确才可以继续,否则一直重新输入!!!
        System.out.println("请输入一个整数:");
        n = sc.nextInt();
        if(n>=0&&n<=9999999){
            break;
        }
        else{
            System.out.println("输入的整数不在0-9999999之间,请重新输入!");
        }
    }

        String[] result = every(n);
        if (result != null) {// 从高位到低位输出(数组倒序输出)
            for (int i = result.length - 1; i >= 0; i--) {
                switch (i){
                    case 0:result[i]+="元";
                        break;
                    case 1:result[i]+="拾";
                        break;
                    case 2:result[i]+="佰";
                        break;
                    case 3:result[i]+="仟";
                        break;
                    case 4:result[i]+="万";
                        break;
                    case 5:result[i]+="拾";
                        break;
                    case 6:result[i]+="佰";
                        break;
                }
                System.out.print(result[i]);
            }
            System.out.println(); // 换行
        }
}
public static String[] every(int n){
    int[] str=new int[7];//将输入的数字的每一位都提取出来
    int count=0;
    while (n > 0) {
        for (int i = 0; i<str.length; i++) {
            str[i] = n%  10;
            n /= 10;
            count++;
        }
    }
    for(int i=6;i>=count;i--){//将剩余的数组位置用0填
        str[i]=0;
    }
        String[] result=new String[7];
        for(int i=0;i<7;i++){
            switch (str[i]){
                case 0:result[i]="零";
                    break;
                case 1:result[i]="壹";
                    break;
                case 2:result[i]="贰";
                    break;
                case 3:result[i]="叁";
                    break;
                case 4:result[i]="肆";
                    break;
                case 5:result[i]="伍";
                    break;
                case 6:result[i]="陆";
                    break;
                case 7:result[i]="柒";
                    break;
                case 8:result[i]="捌";
                    break;
                case 9:result[i]="玖";
                    break;
            }
        }
        return result;
}

}

结果如下:

(7)手机号屏蔽

解题思路:通过以上两个方法,使用的时候应该是   数组名.substring(a,b)/数组名.substring(a)

通过字符串拼接的方法实现

代码如下:

package com.xzhao.test.cat;

import java.util.Scanner;

public class bianli {
    public static void main(String[] args) {
 Scanner sc = new Scanner(System.in);
    String str;
    while(true){
        System.out.println("请输入你的手机号:");
        str = sc.nextLine();
        if(str.length()==11){
            break;
        }
        else{
            System.out.println("你输入的手机号格式有误,请重新输入!");
        }
    }
    System.out.println(pingbi(str));
}

public static String pingbi(String s){
    String s1=s.substring(0,3);
    String s2="****";
    String s3=s.substring(7);
    return s1+s2+s3;
}

}

结果如下:

(8)身份信息查看

解题思路:同样使用上面的那个函数进行提取字符。在判断性别的时候,可以先用%2比较,偶数是女,奇数是男

代码如下:

Scanner sc = new Scanner(System.in);
String str;
while(true){
    System.out.println("请输入你的身份证号:");
    str = sc.nextLine();
    if(str.length()==18){
        break;
    }
    else{
        System.out.println("身份证信息输入错误,重新输入!");
    }
}
System.out.println("出生年月日:"+str.substring(6,10)+"年"+str.substring(10,12)+"月"+str.substring(12,14)+"日");
System.out.println("性别为:"+(str.charAt(16)%2==0?"女":"男"));

结果如下:

(9)敏感词替换

解题思路:新建一个敏感词库,把敏感词放在数组里边,之后进行循环,如果说的话里有敏感词就进行依次替换。

代码如下:

String str="你玩的真不错,以后别玩了,MD!";
String[] talk={"TMD","SB","MD"};//敏感词库
for(int i=0;i<talk.length;i++){//依次循环看是否存在敏感词
    str=str.replace(talk[i],"***");
}
System.out.println(str);

结果如下:

理论知识:

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐