2022.5.30作业CL

范型回顾:
1.范型1-数组回顾及优缺点
数组
属于引用数据类型
只能保存同一种数据类型
数组长度分配后不可改变
优点:高效运行
缺点:无法直接删除和增加元素

2.范型2-ArrayList的使用及缺点分析
ArrayList list1 = new AarryList();
list1.add 增加
list1.set 修改
list1.remove 删除
list1数据类型是Object
计算时默认为int数据类型
需要强转可能会出错

3.范型3-入门-用范型解决隐患问题
将数据类型作为可以变化的“参数“
<数据类型占位符>
如:ArrayList<Integer>
保证了类型的安全性
避免强制转换
避免不必要的装箱、拆箱操作,提升性能
提高了代码的重用性

4.范型4-定义-范型类
语法:public class 类名<字母>

5.范型5-定义-范型方法
在定义方法时,先定义范型参数并马上用在返回值或形参中;
与所在类是否为范型类无关
语法(3种):
<T> void 方法名(T 变量名)
<T> T 方法名 ()
<T> T 方法名 (T 变量名)
T代表范型类型

6.范型6-定义-范型接口
在接口定义时指定范型
当类实现带范型的接口时处理:
1、将<T>改为具体的数据类型
2、保持<T>的定义,但是类须改为范型类

7.范型7-通配符1-问号
范型本质上是一个数据类型的占位符,与<>中具体类型无关(类型擦除),会提示方法签名相同
使用<?>占位符
通配符代表“一种数据类型”,但具体类型是未知的
与<Object>不同,<Object>集合中可以包含任何“多种数据类型”的元素

8.范型8-通配符2-问号extends类
List<? extends 类>
限制条件
可以接受的集合的数据类型为该类类型
或者为该类的子类类型

9.范型9-通配符3-问号super类
List<? super 类>
限定接受集合数据类型为该类或其父类

10.范型10-通配符4-问号extends接口
List<? extends 接口>
限定接口该类及其子类实现接口可行,对于extends限制不能添加元素,null除外

 

注册

import java.util.Scanner;

public class PersonMain {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String username;
        String password1;
        String password2;
        System.out.println("欢迎来到注册页面");
        System.out.println("请输入用户名:");
        username = sc.nextLine();
        System.out.println("请输入密码:");
        password1 = sc.nextLine();
        System.out.println("请再次输入密码");
        password2 = sc.nextLine();

        User user = new User(username,password1,password2);

        boolean b1 = User.checkUserName(user.getUsername());

        boolean b2 = User.checkPassword(user.getPassword1(),user.getPassword2());
        if(b1&&b2){
            System.out.printf("%s用户注册成功!\r",username);
        }else{
            System.out.println("输入错误,请检查用户名和密码是否输入正确");
        }
    }

}
import static java.lang.Character.isLetterOrDigit;

public class User {
    private String username;
    private String password1;
    private String password2;

    public User(){}

    public User(String username, String password1, String password2) {
        this.username = username;
        this.password1 = password1;
        this.password2 = password2;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword1() {
        return password1;
    }

    public void setPassword1(String password1) {
        this.password1 = password1;
    }

    public String getPassword2() {
        return password2;
    }

    public void setPassword2(String password2) {
        this.password2 = password2;
    }

    public static boolean checkUserName(String username) {
        boolean a1 = false;
        char userName[] = username.toCharArray();
        //判断用户名首位字符是否为字母
        if((userName[0]>='a'&&userName[0]<='z')||(userName[0]>='A'&&userName[0]<='Z')){
            //判断用户名是否包含大小写
            int num1=0,num2=0;
            for(int j=0;j<userName.length;j++){
                if(userName[j]>='a'&&userName[j]<='z'){num1++;}
                if(userName[j]>='A'&&userName[j]<='Z'){num2++;}
            }
            if(num1>0&&num2>0){a1=true;}
        }
        //判断用户名是否由字母或数字构成
        for (char c : userName) {
            boolean c1 = isLetterOrDigit(c);
            if (!c1) {
                a1 = false;
                break;
            }
        }
        return a1;
    }

    public static boolean checkPassword(String password1, String password2) {
        boolean a2 = false;
        char passWord1[] = password1.toCharArray();
        char passWord2[] = password2.toCharArray();
        //判断密码前后是否一致
        a2 = password1.equals(password2);
        //判断密码是否由字母或数字构成
        for (char c : passWord1) {
            boolean c1 = isLetterOrDigit(c);
            if (!c1) {
                a2 = false;
                break;
            }
        }
        for (char c : passWord2) {
            boolean c1 = isLetterOrDigit(c);
            if (!c1) {
                a2 = false;
                break;
            }
        }
        return a2;
    }

}

import org.junit.Test;

import java.util.Scanner;

import static java.lang.Character.isLetterOrDigit;

public class TestUser {
    @Test
    public void TestCheckUserName(){
        Scanner sc = new Scanner(System.in);
        System.out.println("输入用户名");
        String username = sc.nextLine();
        boolean a1 = false;
        char userName[] = username.toCharArray();
        //判断用户名首位字符是否为字母
        if((userName[0]>='a'&&userName[0]<='z')||(userName[0]>='A'&&userName[0]<='Z')){
            //判断用户名是否包含大小写
            int num1=0,num2=0;
            for(int j=0;j<userName.length;j++){
                if(userName[j]>='a'&&userName[j]<='z'){num1++;}
                if(userName[j]>='A'&&userName[j]<='Z'){num2++;}
            }
            if(num1>0&&num2>0){a1=true;}
        }
        //判断用户名是否由字母或数字构成
        for (char c : userName) {
            boolean c1 = isLetterOrDigit(c);
            if (!c1) {
                a1 = false;
                break;
            }
        }
        if(a1){
            System.out.println("成功");
        }else{
            System.out.println("失败");
        }
    }

    @Test
    public void TestCheckPassword() {
        Scanner sc = new Scanner(System.in);
        System.out.println("输入密码");
        String password1=sc.nextLine();
        System.out.println("再次输入密码");
        String password2=sc.nextLine();
        boolean a2 = false;
        char passWord1[] = password1.toCharArray();
        char passWord2[] = password2.toCharArray();
        //判断密码前后是否一致
        a2 = password1.equals(password2);
        //判断密码是否由字母或数字构成
        for (char c : passWord1) {
            boolean c1 = isLetterOrDigit(c);
            if (!c1) {
                a2 = false;
                break;
            }
        }
        for (char c : passWord2) {
            boolean c1 = isLetterOrDigit(c);
            if (!c1) {
                a2 = false;
                break;
            }
        }
        if(a2){
            System.out.println("成功");
        }else{
            System.out.println("失败");
        }
    }
}

 


 

posted @ 2022-05-30 21:11  未显示昵称  阅读(35)  评论(0)    收藏  举报