CHL-5.30练习

1.数组的优点:可高效运行;缺点:编译时必须确定数组长度,并且无法对编译完成后的数组属性直接进行增加和删除,只能存放一种数据类型。

2.ArrayList 优点:不必在最开始就确定长度,当数据数量超过默认长度会自动增加,可以实现对数据的自动装箱,可以存放多种数据类型,可以直接进行数据的增删。 缺点:默认为Object类型,这样保存的数据在使用时有时需要强转,容易出错。

3.List<T> list = list<>/ new ArrayList<>() 泛型定义直接确定了列表存放的数据类型T,防止使用时数据强转出错。

4.泛型类:public class 类名<T>。

5.泛型方法:1.无返回值 public <T> void method(T 变量名){} 2.有返回值无参数 public <T> T method(){} 3.有返回值有参数 public <T> void method(T 变量名){}

6.泛型接口: public interface IFly<T>{

void fly(T value)// <T> fly(T value)

}

7.<?>表示一个不确定的类型,可以是任何类型,在编译时确定为指定数据类型。

8.<?> extends T 类:?确定的类型只能是T类型或者其子类类型

9.<?>super T: ?确定的类型只能是T类型或者其父类类型

10.<?>接口只能确定为能实现接口的类及其子类。

 

 

 

*、用户注册功能(需求:在控制台输入用户名和密码,经检测以后,若成功,则输出:**注册成功。

package com.iit.homework;

public class User{

    private  String uname;
    private  String pwd1;
    private  String pwd2;

    public User(String uname, String pwd1, String pwd2) {
        this.uname = uname;
        this.pwd1 = pwd1;
        this.pwd2 = pwd2;
    }

    @Override
    public String toString() {
        return "User{" +
                "uname='" + uname + '\'' +
                '}';
    }

    public String getUname() {
        return uname;
    }

    public void setUname(String uname) {
        this.uname = uname;
    }

    public String getPwd1() {
        return pwd1;
    }

    public void setPwd1(String pwd1) {
        this.pwd1 = pwd1;
    }

    public String getPwd2() {
        return pwd2;
    }

    public void setPwd2(String pwd2) {
        this.pwd2 = pwd2;
    }

    /**
     * 验证用户名是否符合要求
     * @return
     */
    public boolean checkUname(){
        boolean conUname = false;

        if(this.uname.length()>0){
            if(Character.isLetter(this.uname.charAt(0))){
                for(int i=1;i<this.uname.length();i++){
                    if(Character.isLetterOrDigit(this.uname.charAt(i))){
                        boolean check1 = false;
                        boolean check2 = false;
                        boolean check = check1 && check2;
                        if (Character.isLowerCase(this.uname.charAt(i))){
                            check1 = true;
                            if (Character.isUpperCase(this.uname.charAt(i))){
                                check2 = true;
                                if(check){
                                    conUname = true;
                                }else {
                                    conUname = false;
                                    System.out.println("用户名字母要包含大小写");
                                    break;
                                }
                            }
                        }

                    }else {
                        conUname = false;
                        System.out.println("用户名只能字母或字母加数字组成");
                        break;
                    }
                }
            }else {
                conUname = false;
                System.out.println("用户名必须以字母打头");
            }
        }else {
            System.out.println("用户名不能为空");
        }
        return conUname;
    }

    /**
     * 验证密码是否符合要求
     * @return
     */
    public boolean checkPwd(){
        boolean conPwd = false;
        if(this.pwd1.length()>0) {
            conPwd = true;
        }else {
            conPwd = false;
            System.out.println("密码不能为空");
        }
        if(this.pwd2.length()>0){
            boolean check = this.pwd1.equals(this.pwd2);
            if(check){
                conPwd = true;
            }else {
                conPwd = false;
                System.out.println("两次输入的密码不相同,请重新输入");
            }
        }
        return conPwd;
    }

    /**
     * 判断注册结果
     * @param conUname
     * @param conPwd
     * @return  成功返回true,失败返回false
     */
    public boolean isPass(boolean conUname,boolean conPwd) {
        boolean result = false;
        if (conUname && conPwd) {
            result = true;
        } else {
            result = false;
        }
        return result;
    }

}
package com.iit.homework;

import java.util.Scanner;

public class TestUser {
    public static void main(String[] args) {
        System.out.println("用户注册:");
        System.out.println("请输入用户名:");
        String uname = new Scanner(System.in).nextLine();
        System.out.println("请输入密码:");
        String pwd1 = new Scanner(System.in).nextLine();
        System.out.println("请确认您的密码:");
        String pwd2 = new Scanner(System.in).nextLine();

        User user = new User(uname,pwd1,pwd2);
        boolean check1 = user.isPass(user.checkUname(), user.checkPwd());
        String checkMsg = check1 ?"用户注册成功":"用户注册失败";
        System.out.println(checkMsg);

    }
}

 

package demo2;

import com.iit.homework.User;
import org.junit.Assert;
import org.junit.Test;

public class TestUser {
    @Test
    public void testCheckUname1(){
        String uname = "";
        String pwd1 = "123456";
        String pwd2 = "123456";

        User user = new User(uname,pwd1,pwd2);
        boolean check = user.checkUname();
        Assert.assertEquals("用户名不合法",false,check);

    }

    @Test
    public void testCheckUname2(){
        String uname = "121389";
        String pwd1 = "123456";
        String pwd2 = "123456";

        User user = new User(uname,pwd1,pwd2);
        boolean check = user.checkUname();
        Assert.assertEquals("用户名不合法",false,check);
    }

    @Test
    public void testCheckUname3(){
        String uname = "U121389";
        String pwd1 = "123456";
        String pwd2 = "123456";

        User user = new User(uname,pwd1,pwd2);
        boolean check = user.checkUname();
        Assert.assertEquals("用户名不合法",false,check);
    }

    @Test
    public void testCheckUname4(){
        String uname = "User@121389S";
        String pwd1 = "123456";
        String pwd2 = "123456";

        User user = new User(uname,pwd1,pwd2);
        boolean check = user.checkUname();
        Assert.assertEquals("用户名不合法",false,check);
    }

    @Test
    public void testCheckUname5(){
        String uname = "User1389S";
        String pwd1 = "123456";
        String pwd2 = "123456";

        User user = new User(uname,pwd1,pwd2);
        boolean check = user.checkUname();
        Assert.assertEquals("用户名合法",false,check);
    }

    @Test
    public void testCheckPwd1(){
        String uname = "Mike";
        String pwd1 = "";
        String pwd2 = "";

        User user = new User(uname,pwd1,pwd2);
        boolean check = user.checkPwd();
        Assert.assertEquals("密码合法",false,check);
    }

    @Test
    public void testCheckPwd2(){
        String uname = "Mike";
        String pwd1 = "123456";
        String pwd2 = "12345x";

        User user = new User(uname,pwd1,pwd2);
        boolean check = user.checkPwd();
        Assert.assertEquals("密码合法",false,check);
    }

    @Test
    public void testCheckPwd3(){
        String uname = "Mike";
        String pwd1 = "123456";
        String pwd2 = "123456";

        User user = new User(uname,pwd1,pwd2);
        boolean check = user.checkPwd();
    }

    @Test
    public void testCheckIsPass1(){
        String uname = "Mike";
        String pwd1 = "123456";
        String pwd2 = "123456";

        User user = new User(uname,pwd1,pwd2);
        boolean check1 = user.checkUname();
        boolean check2 = user.checkPwd();
        boolean check = user.isPass(check1,check2);
        Assert.assertEquals("注册成功",false,check);
    }

    @Test
    public void testCheckIsPass2(){
        String uname = "1Mike";
        String pwd1 = "123456";
        String pwd2 = "123456";

        User user = new User(uname,pwd1,pwd2);
        boolean check1 = user.checkUname();
        boolean check2 = user.checkPwd();
        boolean check = user.isPass(check1,check2);
        Assert.assertEquals("注册失败",false,check);
    }

    @Test
    public void testCheckIsPass3(){
        String uname = "Mike";
        String pwd1 = "123456";
        String pwd2 = "12345x";

        User user = new User(uname,pwd1,pwd2);
        boolean check1 = user.checkUname();
        boolean check2 = user.checkPwd();
        boolean check = user.isPass(check1,check2);
        Assert.assertEquals("注册失败",false,check);
    }

}

 

posted @ 2022-05-30 09:14  Eternitypokemon  阅读(39)  评论(0)    收藏  举报