2014-10-12 2 views
0

Когда я запускаю эту часть своей программы, он не может распознать два оператора ввода, используя 'sc.nextLine();', но он принимает запись для 'sc.next();'. У кого-нибудь есть предложения?Логическая ошибка с утверждением 'sc.nextLine();'

String information() 
{ 
    int l;char at;String nam,id,number;long contact; 
    System.out.println("\nPlease enter your name"); 
    nam=sc.nextLine(); 
    do 
    { 
     System.out.println("\nPlease enter your contact number"); 
     contact=sc.nextLong(); 
     number=Long.toString(contact); 
     l=number.length(); 
     if(l<5||l>8&&l!=10) 
      error(); 
    } 
    while(l<5||l>8&&l!=10); 
    System.out.println("\nPlease enter your e-mail id"); 
    id=sc.nextLine(); 
    int len=id.length(); 
    for(int k=0;k<len;k++) 
    { 
     at=id.charAt(k); 
     if(Character.isWhitespace(at)) 
     { 
      error(); 
      break; 
     } 
    } 
    return nam; 
} 
+0

Какая ошибка? – Nabin

+0

Это логическая ошибка. Следовательно, когда я запускаю его, он говорит «Пожалуйста, введите свое имя», оставит строку и говорит: «Пожалуйста, введите свой номер контакта». Следовательно, я не могу вносить свой вклад в прежнее утверждение. –

ответ

2

Попробуйте sc.nextLine над

nam = sc.nextLine(); 

Он принимает nextLine в пустую строку, так что вам нужно, чтобы очистить буфер первым.