我正在编写一个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();
答案 0 :(得分:2)
您需要根据要扫描的实例构建阅读器。
在您的情况下,这应该是:
Scanner reader = new Scanner(System.in);
然后,按照您的代码段,您应该将reader
实例拥有的EchoClient
设置为已构建的Scanner
。
答案 1 :(得分:1)
reader
永远不会被初始化,所以它仍然是空的。
答案 2 :(得分:0)
在您创建新EchoReader c
时,它似乎没有设置reader
属性 - 然后当您尝试c.reader
时,您获得null
,导致调用nextInt()
时的NPE。仔细检查您的EchoReader
构造函数是否设置了reader
属性。
答案 3 :(得分:0)
读者永远不会被初始化
答案 4 :(得分:0)
...您是否定义了私人扫描仪阅读器? 扫描仪阅读器=新扫描仪(System.in);