2015-12-07 2 views
-1

Я могу получить данные от пользователей для сканера scan2.But сканирование не генерируется в этом коде, как я могу попасть в этот цикл while, я не могу получить входные данные от пользователей сканирующего сканера. Как я могу получить входные данные от пользователей сканирующего сканера.Java получает вход от пользователя

Scanner scan2 = new Scanner(System.in); 
    System.out.println("Register Section\nID: "); 
    String id = scan2.next(); 
    System.out.println("Password: "); 
    String pass = scan2.next(); 
    createAccount(id, pass, accounts); 
    System.out.println("Login Section\nID: "); 
    id = scan2.next(); 
    System.out.println("Password: "); 
    pass = scan2.next(); 
    boolean X = logIN(id, pass, students); 
    scan2.close(); 

//Login succeed 

    if(X){ 

    Scanner scan = new Scanner(System.in); 
    String line = ""; 

    while (scan.hasNextLine()) {  
     line = scan.nextLine(); 
     if (line.equalsIgnoreCase("quit")) 
      System.exit(0); 

     int timetablestart = line.indexOf('['); 
     int timetablefinish = line.indexOf(']'); 

     String strlistoftimetable = ""; 
     String command = line; 
     String[] timetableslots = null; 
     if ((timetablestart > 0) && (timetablefinish > 0)) { 
      strlistoftimetable = line.substring(timetablestart + 1, 
        timetablefinish); 
      timetableslots = strlistoftimetable.split(", "); 
      command = line.substring(0, timetablestart - 1); 
     } 

     String[] tokens = command.split("\\s"); 
     if (tokens.length < 2) { 
      System.out.println("something is wrong!"); 
      return; 
     } 



     if (tokens[0].equals("add")) { 
      if (tokens[1].equals("O")) { 

       CSDriver.addO(tokens,timetableslots,departments); 


      } else if (tokens[1].equals("C")) { 

       CSDriver.addC(tokens, students); 

      } else if (tokens[1].equals("I")) { 

       CSDriver.addI(tokens,instructors); 


      } 

     } 

     else if (tokens[0].equals("print")) { 

      if (tokens[1].equals("S")) { 

       CSDriver.printS(tokens, students); 


      } else if (tokens[1].equals("I")) { 

       CSDriver.printI(tokens,instructors); 

      } 
       else if (tokens[1].equals("Announcement")) { 

       CSDriver.printAnnouncement(departments); 

      } 
      else if (tokens[1].equals("AcedemicActivities")) { 

CSDriver.printAcedemicActivities(departments);} 
      else if (tokens[1].equals("Attendance")) { 

        CSDriver.checkAttendance(tokens, students); 

       } 
      else if (tokens[1].equals("Internship")) { 

       CSDriver.checkInternship(tokens, students); 

      } 

      else if (tokens[1].equals("SemesterGrades")) { 

       CSDriver.checkSemesterGrades(tokens, students); 
      } 
     }   else 
      System.out.println("something is wrong!"); 


    } 

    scan.close(); 
} } 
+1

Мы должны видеть ваш метод «Логин». Скорее всего, не будет задано значение boolean X: – bpgeck

+0

line = scan.nextLine(); не работает даже X = true –

+0

Пожалуйста, укажите кратчайшую программу, необходимую для воспроизведения проблемы. Мы не можем воспроизвести проблему с кодом, который вы предоставили. –

ответ

3

Вы не получаете ничего от scan, потому что вы уже закрыты System.in (при закрытии scan2, в конце «логин успеха» часть). Вы не должны закрывать его самостоятельно, так как это предотвращает любую будущую попытку прочитать из этого потока.

+0

Спасибо, что помогли мне. Больше нет проблем –

0

При использовании

Scanner scan2 = new Scanner(System.in); 
scan2.close(); 

Вы закрытия Scan2 но System.in, поэтому для того, чтобы исправить вашу проблему вам нужно закрыть сканеры в конце программы.

Переместить эту линию в конце

scan2.close(); 
+0

Спасибо, что помогли мне. Нет проблем. –

Смежные вопросы