【问题标题】:Variable might have not been initialised error变量可能尚未初始化错误
【发布时间】:2016-10-04 06:03:03
【问题描述】:

我目前正在尝试执行一个简单的 Java MVC 应用程序。我有一个 loginbean 和 logindao 类作为模型和控制器。我的视图 loginview.java 有以下代码。

package view;
import bean.loginbean;
import java.io.*;
import java.util.*;
import java.sql.*;
import dao.logindao;
public class loginview{
    public static void main(String [] args){
        loginbean l;
        System.out.println("Enter name : ");
        Scanner s=new Scanner(System.in);
        String n=s.nextLine();
        int a=s.nextInt();
        l.setname(n);
        l.setage(a);
        logindao l1;
        int flag=l1.correct(l);
        if(flag==1)
            System.out.println("Correct");
        else
            System.out.println("Incorrect");
    }
}

我已经使用 set 方法初始化了 l 并且 l1 没有任何数据成员。但我得到了错误

loginview.java:14: error: variable l might not have been initialized
        l.setname(n);
        ^
loginview.java:17: error: variable l1 might not have been initialized
        int flag=l1.correct(l);

【问题讨论】:

  • 您已声明它,但它仍然为空。你需要loginbean l = new loginbean();

标签: java variables model-view-controller initialization


【解决方案1】:

你必须初始化变量:

loginbean l = new loginbean();
logindao l1 = new logindao();

顺便说一句:阅读 Java 命名约定。类名应以大写字符开头。

【讨论】:

    【解决方案2】:

    您在方法中声明了一个没有默认值的变量;

     loginbean l;
    

    改成loginbean l = new loginbean();

    方法局部变量不会获得默认值。所以你需要在使用前给它们赋值。

    另外,对于另一个变量,

    logindao l1 = new logindao();
    

    在命名类时遵循命名约定是一种很好的做法。他们应该使用 CamelCase。

    所以你的类名应该是LoginDaoLoginBean

    【讨论】:

      【解决方案3】:

      你还没有初始化 bean(loginbean) 和 service(logindao)。您需要通过调用它们的构造函数来初始化它们。

      只是在变量 l 上调用 setter 不会初始化 loginbean。

      LoginBean l = new LoginBean(); // Follow Camel Case letters in Java
      

      如果你声明了

      LoginBean l = null;
      

      然后在 l 上调用 setter 方法会抛出 NullPointerException。

      【讨论】:

        猜你喜欢
        • 2016-07-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多