2013-07-17 3 views
13
import java.util.Scanner; 
class MyClass 
{ 
    public static void main(String args[]){ 

       Scanner scanner = new Scanner(System.in); 
       int eid,sid; 
       String ename; 
       System.out.println("Enter Employeeid:"); 
        eid=(scanner.nextInt()); 
       System.out.println("Enter EmployeeName:"); 
        ename=(scanner.next()); 
       System.out.println("Enter SupervisiorId:"); 
         sid=(scanner.nextInt()); 
     } 
} 

Я получил выход при попытке вставить этотКак читать строки из сканера в консоли Приложение JAVA?

Enter Employeeid: 
101 
Enter EmployeeName: 
firstname lastname 
Enter SupervisiorId: 
Exception in thread "main" java.util.InputMismatchException 
    at java.util.Scanner.throwFor(Unknown Source) 
    at java.util.Scanner.next(Unknown Source) 
    at java.util.Scanner.nextInt(Unknown Source) 
    at java.util.Scanner.nextInt(Unknown Source) 
    at com.controller.Menu.<init>(Menu.java:61) 
    at com.tests.Employeetest.main(Employeetest.java:17) 

но работать над этим

Enter Employeeid: 
105 
Enter EmployeeName: 
name 
Enter SupervisiorId: 
501 

То, что я хочу, что я должен прочитать полную строку, будет ли она дана как name или как firstname lastname ..Eg :-(john -> принимается сканером.следующий(); но john carter не принимается сканером.следующий();)

+3

Измените 'scanner.next()' на 'scanner.nextLine()'. –

+0

'sid = (scanner.nextInt()); 'он ожидает int, а не строку, поэтому он работает с' 501' – fmodos

+0

его не работает @matt ball – 09Q71AO534

ответ

20
import java.util.Scanner; 

class MyClass 
{ 
    public static void main(String args[]){ 

       Scanner scanner = new Scanner(System.in); 
       int eid,sid; 
       String ename; 
       System.out.println("Enter Employeeid:"); 
       eid=scanner.nextInt(); 
       scanner.nextLine(); //This is needed to pick up the new line 
       System.out.println("Enter EmployeeName:"); 
       ename=scanner.nextLine(); 
       System.out.println("Enter SupervisiorId:"); 
       sid=(scanner.nextInt()); 
     } 
} 

Вызов nextInt() был проблемой, так как он не взял новую строку (когда вы нажмете enter). Таким образом, вызов scanner.nextLine() после этого выполняет эту работу.

1

Что вы можете сделать, так это использование деминера в качестве новой строки. Пока вы не нажмете клавишу ввода, вы сможете прочитать ее как строку.

Scanner sc = new Scanner(System.in); 
sc.useDelimiter(System.getProperty("line.separator")); 

Надеюсь, это поможет.

0

Вы вступаете нулевое значение nextInt, она не будет выполнена, если вы даете нулевое значение ...

я добавил нулевой чек на кусок кода

Попробуйте этот код:

import java.util.Scanner; 
class MyClass 
{ 
    public static void main(String args[]){ 

       Scanner scanner = new Scanner(System.in); 
       int eid,sid; 
       String ename; 
       System.out.println("Enter Employeeid:"); 
        eid=(scanner.nextInt()); 
       System.out.println("Enter EmployeeName:"); 
        ename=(scanner.next()); 
       System.out.println("Enter SupervisiorId:"); 
        if(scanner.nextLine()!=null&&scanner.nextLine()!=""){//null check 
        sid=scanner.nextInt(); 
        }//null check 
     } 
} 
1

Заменить:

System.out.println("Enter EmployeeName:"); 
       ename=(scanner.next()); 

с:

System.out.println("Enter EmployeeName:"); 
       ename=(scanner.nextLine()); 

Это потому, что next() захватывает только следующий токен, а пробел выступает в качестве разделителя между токенами. Под этим я подразумеваю, что сканер считывает ввод: «имя первого имени» как два отдельных токена. Таким образом, в вашем примере имя ename будет присвоено первому имени, а сканер будет пытаться установить имя супервизора на имя

+0

'scanner.nextLine(); // Это необходимо для подбора новой строки; System.out.println ("Enter EmployeeName:"); ename = scanner.nextLine(); ' – 09Q71AO534

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