变量可能没有初始化错误

时间:2016-10-04 06:03:04

标签: java variables model-view-controller initialization

我目前正在尝试执行一个简单的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);

3 个答案:

答案 0 :(得分:2)

您必须初始化变量:

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

BTW:了解Java命名约定。类名应以大写字符开头。

答案 1 :(得分:0)

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

 loginbean l;

将其更改为loginbean l = new loginbean();

方法局部变量不会获得默认值。所以你需要在使用之前为它们分配一些值。

另外,对于另一个变量,

logindao l1 = new logindao();

在命名类时遵循命名约定是一种好习惯。他们应该使用CamelCase。

因此,您的班级名称应为LoginDaoLoginBean

答案 2 :(得分:0)

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

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

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

此外,如果您声明

LoginBean l = null;

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