扫描仪的问题

时间:2011-10-17 15:21:41

标签: 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();

5 个答案:

答案 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);