用户登陆
一般,会有判断名字和密码两个是否一一匹配的方法:
package com.xatu.Test;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
/**
* 判断并处理用户登陆问题。
*
* @author Feng 2018年2月3日上午9:38:00
*/
public class JudgUser {
static List<User> list = new ArrayList<User>();
static Scanner input = new Scanner(System.in);
public JudgUser() {// 初始化两个用户
list.add(new User("松松", "123"));
list.add(new User("璐璐", "456"));
}
/**
* 判断方法:
*
* @param name
* @return
*/
public boolean judgName(User user) {// 判断名字是否存在
for (int i = 0; i < list.size(); i++) {
if (list.get(i).getName().equals(user.getName())) {// 名字是存在的时候,再判断密码
if (list.get(i).getPassword().equals(user.getPassword())) {// 密码存在
System.out.println("该用户名和密码正确,可登陆。");
return true;
} else {
System.out.println("用户名正确,密码错误!");
continue;
}
}
continue;
}
return false;
}
/**
* 程序入口方法。
*
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
JudgUser ju = new JudgUser();
String name = null;
String password = null;
System.out.println("------------用户登陆界面------------");
System.out.println("请输入你的登陆名:");
name = input.next();
System.out.println("请输入你的密码:");
password = input.next();
// 验证普通方法登陆!确实很麻烦!
User u1 = new User(name, password);
// if (ju.judgName(u1)) {// 传入用户(名字,密码),进行判断
// System.out.println("欢迎,你已经登陆了!!");
// } else {
// System.out.println("请先注册!");
// }
/**
* 异常处理:throw ,throws
*/
for (int i = 0; i < list.size(); i++) {
if (list.get(i).getName().equals(u1.getName())) {
if (list.get(i).getPassword().equals(u1.getPassword())) {
System.out.println("登陆成功!");
} else {
throw new NoSomething("密码错误!");
}
} else if (i != list.size() - 1) {
continue;
} else {
throw new NoSomething("用户名不存在!");
}
}
}
}
这是一个自定义异常。这个自定义异常是继承自Exception的,他其实也可以直接继承RuntimeException,因为他本身就是一个运行时异常,假如我们让他继承运行时异常时,可以不用throws在方法上声明。throws在这里表示“我不处理这个异常”。其实仔细想想的话,完全没有必要这样,直接判断,if语句的嵌套循环可以处理的,就像是我的第一种方法(已经被注释掉了。),这里是本人为了复习一下异常,特别拿出来用一下,担心忘了。哈哈。
package com.xatu.Test;
@SuppressWarnings("serial")
public class NoSomething extends Exception {
/**
* Feng2018年2月3日
*/
public NoSomething(String message) {
super(message);
}
}
第一种方法已经被我注释掉了,第二种的逻辑看起来能好点。
一个简单的判断!!上边用throw throws 来抛出异常。