public static int logIn(Statement stmt){
int id;
String pw;
String select;
boolean match;
System.out.print("userID: ");
id = input.nextInt();
input.nextLine();
System.out.print("password: ");
pw = input.next();
input.nextLine();
select = "SELECT user_id, password FROM login WHERE user_id = " + id;
try{
ResultSet rs = stmt.executeQuery(select);
while(rs.next()){
if(id == rs.getInt(1) && pw.equals(rs.getString(2))){
match = true;
}
}
}
catch(SQLException logfail){
logfail.printStackTrace();
System.out.println("could not print password");
}
if(match == true)
return id;
else break;
}
在我的程序中,用户将输入他们的登录信息。然后他们将看到一个菜单,他们可以在其中选择选项 1-7。选项 1-7 只是将对自己的数据运行的各种查询。
我的登录功能是验证他们的身份,让他们访问自己的数据。如果验证通过,我会返回他们输入的 ID 号,以便我可以将其传递给其他函数 (1-7)。
在我的 if-else 语句中,我希望它在密码匹配时返回 ID 号,在失败时返回 null
。
我知道 int
不能为 null
但我此方法的返回类型是 int
那么我该怎么办?
为了及时完成我的任务,如果事情不匹配,我将返回一个值 0 以指示登录失败。但是,对我来说更重要的是成为一名优秀的 Java 程序员,所以我想知道:
- 有更好的方法吗?和
- 既然有,我能做什么以及如何做?
谢谢!
最佳答案
您可以进行的最简单的更改是返回 Integer
并返回 null
。 Integer
是一个对象,这就是您可以这样做的原因。
或者,如果无法登录是一个错误,您可以抛出异常。这可能不是特例,所以这可能不是最好的方法。
可能您能做的最好的事情就是不返回 int/Integer。相反,有一个代表下一步要做的事情的类。
关于java - 如何不为返回类型为 int 的方法返回任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16907848/