2016-10-04 82 views
-1

我目前正在嘗試執行一個簡單的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

你已經聲明它,但它仍然是空的。你需要'loginbean l = new loginbean();' –

回答

2

您必須初始化變量:

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

BTW:瞭解Java的命名約定。類名應該以大寫字母開頭。

0

您正在聲明一個方法中沒有默認值的變量;

loginbean l; 

將其更改爲loginbean l = new loginbean();

方法的局部變量不會得到默認值。所以你需要在使用前給他們分配一些值。

而且,另一個變量,

logindao l1 = new logindao(); 

這是很好的做法,遵循命名類時命名約定。他們應該使用CamelCase。

所以,你的類名應該是LoginDaoLoginBean

0

您尚未初始化bean(loginbean)和service(logindao)。你需要通過調用它們的構造函數來初始化它們。

只需調用變量l的setter就不會初始化loginbean。

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

此外,如果你申報

LoginBean l = null; 

然後調用開左setter方法將拋出NullPointerException。