#java #eclipse
#java #eclipse
Вопрос:
Я пишу Java-программу, которая будет принимать ввод int в качестве опции от пользователя. На основе входных данных программа перейдет к другому методу.Но когда я запускаю код, он выдает следующую ошибку
Exception in thread "main" java.lang.NullPointerException
at lab1.EchoClient.main(EchoClient.java:25)
часть моего кода
private Scanner reader;
public static void main(String[] args){
EchoClient c = new EchoClient();
int option;
System.out.println("Welcome");
System.out.println("Select one of the following options:");
System.out.println("1 - Iterative Server");
System.out.println("2 - Concurrent Server");
System.out.println("3 - Exit");
option = c.reader.nextInt(); // Line No 25
switch(option){
case 1:
c.iterative();//calls the iterative method
break;
case 2:
//some method
break;
case 3:
System.out.println ("bye bye");
break;
}//end of switch()
}//end of main()
public void iterative(){
String address;
String ip="";
try{
System.out.println ("Please enter your correct ip address");
BufferedReader getip= new BufferedReader (newInputStreamReader(System.in));
ip=getip.readLine();
}
catch (IOException error){
System.err.println("Error occured");
}
В строке 25 находится строка : option = c.reader.nextInt();
Комментарии:
1. пожалуйста, попробуйте лучше отформатировать свой исходный код, чтобы люди, которые хотят вам помочь, в конечном итоге не тратили много своего времени.
Ответ №1:
Вам нужно создать reader в соответствии с экземпляром, который вы хотите сканировать.
В вашем случае это должно выглядеть так:
Scanner reader = new Scanner(System.in);
Затем, следуя вашему фрагменту кода, вы должны установить reader
принадлежащий вашему экземпляру EchoClient
для built Scanner
.
Ответ №2:
reader
никогда не инициализируется, поэтому он по-прежнему равен нулю.
Ответ №3:
Похоже, что когда вы создаете свой новый EchoReader c
, он не устанавливает reader
атрибут — затем, когда вы пытаетесь c.reader
, вы получаете null
, что приводит к NPE при вызове nextInt()
. Дважды проверьте, что ваш EchoReader
конструктор устанавливает reader
атрибут.
Ответ №4:
насколько я могу судить, reader никогда не инициализируется
Ответ №5:
…вы определили свой собственный сканер для чтения? Считыватель сканера = новый сканер (System.in );