我目前正在尝试执行一个简单的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);
答案 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。
因此,您的班级名称应为LoginDao
和LoginBean
答案 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。