#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.