A-02

一、项目检查*、

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

public class Starts {
public static void main(String[] args) {
System.out.println("请输入用户名!");
Scanner sc = new Scanner(System.in);
String userName = sc.next();
System.out.println("请输入密码!");
String userPassword1 = sc.next();
System.out.println("请重复密码!");
String userPassword2 = sc.next();

User use = new User(userName,userPassword1,userPassword2);

boolean b1 = use.checkUserName();
boolean b2 = use.checkUserPassword();
if (b1 && b2) {
use.register();
}else {
use.erro();
}
}
}
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 boolean checkUserName() {
char[] ch = this.userName.toCharArray();
char c = this.userName.charAt(0);
if (c>=65 && c<=90 || c>=97 && c<=122) {
for (int i = 1; i < ch.length; i++) {
char c2 = this.userName.charAt(i);
if (c2>='a'&& c2<='z' || c2>='A' && c2<='Z' || c2>='0'&& c2<='9'){
return true;
}else if (c2<='0' && c2>='9'){
if (c2>='a'&& c2<='z' || c2>='A' && c2<='Z'){
return true;
}else {
System.out.println("需要包含大小写!");
return false;
}
}else {
System.out.println("格式错误!");
return false;
}
}
}
return false;
}


public boolean checkUserPassword() {
if(this.Password1.equals(this.Password2)) {
return true;
}else {
System.out.println("密码输入错误!");
return false;
}

}

public void register() {
System.out.printf("%s注册成功\r",userName);
}

public void erro() {
System.out.println("注册失败!");
}
}
public class TestUser {

@Test
public void userName1(){
String name = "mini";
User user = new User(name,"","");
boolean b1 = user.checkUserName();
Assert.assertEquals("用户名不合法请检查",true,b1);

}
@Test
public void userName2(){
String name = "";
User user = new User(name,"","");
boolean b1 = user.checkUserName();
Assert.assertEquals("用户名不合法请检查",false,b1);

}
@Test
public void userName3(){
String name = " ";
User user = new User(name,"","");
boolean b1 = user.checkUserName();
Assert.assertEquals("用户名不合法请检查",false,b1);

}
@Test
public void Password1(){
String name = "mini";
User user = new User(name,"1234","1234");
boolean b1 = user.checkUserPassword();
Assert.assertEquals("用户名不合法请检查",true,b1);

} @Test
public void Password2(){
String name = "mini";
User user = new User(name,"123","1234");
boolean b1 = user.checkUserPassword();
Assert.assertEquals("用户名不合法请检查",false,b1);

}
}

二、范型回顾:

1.范型1-数组回顾及优缺点

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


2.范型2-ArrayList的使用及缺点分析

语法:ArrayList list = new ArrayList();可以直接添加和删除元素,但是这里的list是Object类型,当输入的是String类型时,因String类型无法被强转而发生错误。


3.范型3-入门-用范型解决隐患问题

不同数据类型在转型时会遇到问题,提高代码安全性;


4.范型4-定义-范型类

public class 类名<T>


5.范型5-定义-范型方法

(1.无返回值 public <E> void 方法名(E 变量名)

(2.有返回值无参数 public <E> E 方法名()

(3.有返回值有参数 public <E> E 方法名(E 变量名)

6.范型6-定义-范型接口  

public interface 接口名<T>{void 方法名(T 变量名)}

7.范型7-通配符1-问号   

<?>表示一个不确定的类型,可以是任何类型

8.范型8-通配符2-问号extends类

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


9.范型9-通配符3-问号super类

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


10.范型10-通配符4-问号extends接口

public void List(<? extends  接口名>)

限定是只能是某个接口

posted @ 2022-05-30 17:32  C-t  阅读(39)  评论(0)    收藏  举报