LY-作业

泛型回顾

1、数组只能保存一种数据类型,数组长度一旦分配就不能改变,而且无法直接删除和添加元素,但是数组可以高效运行。
2、语法:ArrayList list = new ArrayList();可以直接添加和删除元素,但是这里的list是Object类型,当输入的是String类型时,因String类型无法被强转而发生错误。
3、语法:ArrayList<Integer> list = new ArrayList<Integer>;可以指定数据类型为int
4、语法:public class 类名<字母>
作用:安全性;没有泛型,可以加入任何数据类型
避免强制转换
避免不必要的装箱、拆箱
重用性:不用定义各种具体的数据类型
5、泛型方法:在定义方法时,先定义泛型参数并马上用在返回值或形参中;与所在类是否为泛型类无关。
语法:1)无返回值:public <E> void 方法名(E 变量名)
2)有返回值:public <E> E 方法名()
3)有返回值和形参 public <E> E 方法名(E 变量名)
6、语法:public interface 接口名<T>{void 方法名(T 变量名)}
7、语法:public void 方法名(List<?> list)
8、语法:public void 方法名(List<? extends> list)
9、语法:public void 方法名(List<? super> list)
10、语法:public void 方法名(List<? extends> 接口名)

项目package com.jgw.day12;

复制代码
import java.util.Scanner;

public class DemoRegister {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入用户名:");
        String name = sc.next();
        System.out.println("请输入密码:");
        String no1 = sc.next();
        System.out.println("请再次输入密码:");
        String no2 = sc.next();
        boolean isPass = User.Register(name,no1,no2);
        if(isPass){
            System.out.println(name+"注册成功!");
        } else{
            System.out.println("请重新注册!");
        }
    }
}
复制代码
复制代码
package com.jgw.day12;

public class User {

    public static boolean Register(String name,String no1,String no2) {
        // 判断用户名和密码是否符合规则
        boolean sname = false;
        boolean sno = false;
        boolean ssno = false;
        boolean result = false;
        if (name.length()>0 && Character.isLetter(name.charAt(0))) {
            for (int i = 0; i < name.length(); i++) {
                // 验证用户名是否全部为字母
                // 字符必须同时包含大小写字母
                 boolean isLower = Character.isLowerCase(i);
                 boolean isUpper = Character.isUpperCase(i);
                 int lower = 0;
                 int upper = 0;
                if (Character.isLetterOrDigit(name.charAt(i))) {
                    if(method(name)){
                        sname = true;
                    }
                } else {
                    sname = false;
                    System.out.println("用户名只能由字母和数字组成。");
                    break;
                }
            }
            } else {
            System.out.println("用户名不能为空且首字母必须大写!");
        }

        if (no1.length() > 0) {
            for (int j = 0; j < no1.length(); j++) {
                // 两次密码要相同
                if (Character.isLetterOrDigit(name.charAt(j))) {
                        sno = true;
                } else {
                    sno = false;
                    System.out.println("密码只能由字母和数字组成。");
                    break;
                }
            }
        } else {
            System.out.println("密码不能为空!");
        }

        if(no1.equals(no2)){
            ssno = true;
        }else{
            ssno = false;
            System.out.println("两次密码不同,请重新注册!");
        }

        if (sname && ssno) {
            result = true;
        } else {
            result = false;
        }

        return result;
    }

    // 字符是否同时有大小写字母
    public static boolean method (String name){
        int lower = 0;
        int upper = 0;
        boolean result = false;
        for (int i = 0; i < name.length(); i++) {
            char c = name.charAt(i);
            if (c >= 'a' && c <= 'z') {
                lower++;
            } else if (c >= 'A' && c <= 'Z') {
                upper++;
            }
        }
        if(lower>0 && upper>0){
            result = true;
        }else{
            result =false;
        }
        return  result;
    }
}
复制代码
复制代码
package day2;

import com.jgw.day12.User;
import org.junit.Assert;
import org.junit.Test;

public class TestUser {
    //  测试用户名
    @Test
    public void testName(){
        String name = "LiuYan123";
        String no1 = "qwe123";
        String no2 = "qwe123";
        boolean check = User.Register(name,no1,no2);
        Assert.assertEquals("测试不通过,用户名由字母和数字组成且必须同时包含大小写字母",true,check);
    }

    // 测试密码
    @Test
    public void testPassword(){
        String name = "LiuYan123";
        String no1 = "1234";
        String no2 = "1234";
        boolean check = User.Register(name,no1,no2);
        Assert.assertEquals("测试不通过,密码必须由数字和字母组成且两次密码要相同",true,check);
    }
}
复制代码

 

posted @   帝三  阅读(94)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示