java实现用户登录,自定义两个异常类用户名密码无误则登录成功
时间: 2023-08-01 11:12:29 浏览: 157
首先,我们需要定义两个异常类:`UsernameException` 和 `PasswordException`,分别用于表示用户名错误和密码错误:
```java
public class UsernameException extends Exception {
public UsernameException(String message) {
super(message);
}
}
public class PasswordException extends Exception {
public PasswordException(String message) {
super(message);
}
}
```
接下来,我们可以编写一个 `User` 类来表示用户,包含用户名和密码:
```java
public class User {
private String username;
private String password;
public User(String username, String password) {
this.username = username;
this.password = password;
}
public String getUsername() {
return username;
}
public String getPassword() {
return password;
}
}
```
最后,我们可以编写一个 `LoginService` 类来实现用户登录功能,包括验证用户名和密码,并抛出相应的异常:
```java
public class LoginService {
private static List<User> users = new ArrayList<>();
static {
users.add(new User("admin", "admin"));
users.add(new User("user", "123456"));
}
public static void login(String username, String password) throws UsernameException, PasswordException {
boolean usernameValid = false;
boolean passwordValid = false;
for (User user : users) {
if (user.getUsername().equals(username)) {
usernameValid = true;
if (user.getPassword().equals(password)) {
passwordValid = true;
break;
} else {
throw new PasswordException("密码错误");
}
}
}
if (!usernameValid) {
throw new UsernameException("用户名错误");
} else if (!passwordValid) {
throw new PasswordException("密码错误");
}
}
}
```
在 `login` 方法中,我们先假设用户名和密码都无效,然后遍历已经注册的用户列表,如果找到了匹配的用户名,再检查密码是否匹配。如果密码不匹配,抛出 `PasswordException` 异常;如果用户名也不匹配,抛出 `UsernameException` 异常。如果用户名和密码都匹配,那么登录成功。
最后,我们可以编写一个测试类来测试登录功能:
```java
public class Test {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入用户名:");
String username = scanner.nextLine();
System.out.print("请输入密码:");
String password = scanner.nextLine();
try {
LoginService.login(username, password);
System.out.println("登录成功");
} catch (UsernameException e) {
System.out.println("用户名错误:" + e.getMessage());
} catch (PasswordException e) {
System.out.println("密码错误:" + e.getMessage());
}
}
}
```
现在你可以测试一下这个程序,输入正确的用户名和密码,应该可以看到输出“登录成功”;输入错误的用户名或密码,应该可以看到相应的错误提示。
阅读全文