Переменная, возможно, не была инициализирована ошибка

#java #variables #model-view-controller #initialization

#java #переменные #модель-представление-контроллер #инициализация

Вопрос:

В настоящее время я пытаюсь выполнить простое приложение 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");
    }
}
  

Я инициализировал l, используя методы set, а в 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);
  

Комментарии:

1. Вы объявили ее, но она по-прежнему равна нулю. Вам нужно loginbean l = new loginbean();

Ответ №1:

Вы должны инициализировать переменные:

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

Кстати: прочитайте о соглашениях об именовании Java. Имена классов должны начинаться с символа верхнего регистра.

Ответ №2:

Вы объявляете переменную в методе, который не имеет значений по умолчанию;

  loginbean l;
  

Измените ее на loginbean l = new loginbean();

Локальные переменные метода не получат значения по умолчанию. Поэтому вам нужно присвоить им некоторое значение перед использованием.

Кроме того, для другой переменной,

 logindao l1 = new logindao();
  

Хорошей практикой является соблюдение соглашений об именовании при именовании классов. Они должны использовать camelCase.

Итак, имена ваших классов должны быть LoginDao и LoginBean

Ответ №3:

Вы не инициализировали компонент (loginbean) и сервис (logindao). Вам необходимо инициализировать оба, вызвав их конструктор.

Простой вызов setter для переменной l не инициализирует loginbean.

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

Также, если вы объявите

 LoginBean l = null;
  

Тогда вызов метода setter на l вызовет исключение NullPointerException.