Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何不为返回类型为int的方法返回任何内容_Java_Jdbc_Methods - Fatal编程技术网

Java 如何不为返回类型为int的方法返回任何内容

Java 如何不为返回类型为int的方法返回任何内容,java,jdbc,methods,Java,Jdbc,Methods,在我的程序中,用户将输入他们的登录信息。然后,他们将面临一个菜单,在其中他们选择选项1-7。选项1-7只是将在其自身数据上运行的各种查询 我的登录功能是验证他们是谁,以便让他们访问自己的数据。如果验证通过,我将返回他们输入的id号,以便将其传递到其他函数(1-7) 在if-else语句中,如果密码匹配,我希望它返回id号;如果密码匹配失败,则返回null 我知道int不能是null,但是我的这个方法的返回类型是int,那么我能做什么呢? 为了及时完成我的任务,如果不匹配,我将返回一个值0,表示登

在我的程序中,用户将输入他们的登录信息。然后,他们将面临一个菜单,在其中他们选择选项1-7。选项1-7只是将在其自身数据上运行的各种查询

我的登录功能是验证他们是谁,以便让他们访问自己的数据。如果验证通过,我将返回他们输入的id号,以便将其传递到其他函数(1-7)

在if-else语句中,如果密码匹配,我希望它返回id号;如果密码匹配失败,则返回
null

我知道
int
不能是
null
,但是我的这个方法的返回类型是
int
,那么我能做什么呢? 为了及时完成我的任务,如果不匹配,我将返回一个值0,表示登录失败。但是,对我来说,更重要的是成为一名优秀的Java程序员,所以我想知道:

  • 有更好的方法吗?及
  • 既然有,我能做什么,怎么做

  • 谢谢

    如果您声明了一个int类型的方法,它必须返回一个int。只需声明/定义一个无效的返回变量,如果没有找到匹配项,它将返回,就这么简单。

    如果您声明了一个int类型的方法,它必须返回一个int。只需声明/定义一个无效的返回变量,如果找不到匹配项,将返回该变量,就这么简单。

    最简单的更改是返回
    整数
    null
    Integer
    是一个对象,这就是为什么可以这样做

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


    最好不要返回int/Integer。相反,要有一个表示下一步要做的事情的类

    最简单的更改是返回
    Integer
    null
    Integer
    是一个对象,这就是为什么可以这样做

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


    最好不要返回int/Integer。相反,要有一个表示下一步要做的事情的类

    无论何时使用基元类型声明函数,它都必须返回值或引发异常。您可以使用包装器类型:Boolean、Integer、Long等返回null,因为它们是Java中的“真实”对象。

    任何时候您使用基元类型声明函数时,它都必须返回值或引发异常。您可以使用包装类型:Boolean、Integer、Long等返回null,因为它们在Java中是“实”对象。

    当方法的返回类型为
    int
    时,您必须返回
    int
    。若要指示发生了错误,您可以返回无效的值或引发异常。

    如果方法的返回类型为
    int
    ,则必须返回
    int
    。要指示发生了错误,您可以返回一个无效的值,也可以抛出一个异常。

    不从方法返回的最佳方法是抛出一个异常。当人们忘记检查错误值时,返回null或zero等错误值会导致错误代码。异常是明确的,不能忽略。

    不从方法返回的最佳方法是抛出异常。当人们忘记检查错误值时,返回null或zero等错误值会导致错误代码。异常是明确的,不能忽略。

    返回零,或者像-1这样的负值是一种可能性。您还可以创建一个选中的异常
    LoginException
    ,该异常在登录凭据无效时抛出。这种方法的优点是,您可以在
    LoginException
    中记录错误登录尝试,返回零,或者像-1这样的负值是一种可能性。您还可以创建一个选中的异常
    LoginException
    ,该异常在登录凭据无效时抛出。这种方法的优点是,您有一种很好的方法在
    LoginException

    中记录错误登录尝试。实际上,明智的做法是,您应该使用不同的方法将返回编号与查询分开。 要返回null,需要从方法返回一个类,例如ADT(抽象数据类型)。
    但是,如果您可以在每次使用前使用一个Integer类变量将0 0标记为null,并将其重置为null,那么这可能过于复杂,因此如果返回的是零,您只需要输入if-else来测试“Integer”变量为null或包含重置为从方法返回的int数。

    为了明智起见,您应该将返回数与查询分开,将它们放在不同的方法中。 要返回null,需要从方法返回一个类,例如ADT(抽象数据类型)。 但是,如果您可以在每次使用之前使用一个类Integer的变量将0 0标记为null,并将其重置为null,那么这可能过于复杂了。因此,如果返回的变量为零,则只需要输入if-else,以测试“Integer”变量是否为null,或者包含重置为方法返回的int数

        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;
    }