java - 如何不为返​​回类型为 int 的方法返回任何内容

标签 java jdbc methods

    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 程序员,所以我想知道:

  1. 有更好的方法吗?和
  2. 既然有,我能做什么以及如何做?

谢谢!

最佳答案

您可以进行的最简单的更改是返回 Integer 并返回 nullInteger 是一个对象,这就是您可以这样做的原因。

或者,如果无法登录是一个错误,您可以抛出异常。这可能不是特例,所以这可能不是最好的方法。

可能您能做的最好的事情就是不返回 int/Integer。相反,有一个代表下一步要做的事情的类。

关于java - 如何不为返​​回类型为 int 的方法返回任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16907848/

相关文章:

javascript - Javascript 中对象属性的方法

java - 返回方法值的类

java - java中从12小时时间到24小时时间的转换

java - Eclipse:将源代码文件夹导入其他项目

java - 作为部署安装时的 jboss-eap-6.1 oracle 驱动程序定义

java - 如何将sql查询数组传递给函数

objective-c - 从 Objective-C 中的方法返回多个对象

java - 从 Android Activity 调用时 OpenCv 崩溃

java - 无法使用 JavaFX 获取标签来更新其文本

java - 处理 servlet 中的意外结束请求