2016-02-05 2 views
-2
String clientName; 
do 
{ 
    System.out.println("Enter your Name"); 
    while (keyboard.hasNextInt()) 
    { 
     System.out.println("That's not a name!"); 
     keyboard.next(); 
     System.out.println("Enter your Name"); 
    } 
    clientName = keyboard.nextLine(); 

} while (clientName.equals("")); 

Любая идея, почему этот код возникает с «незаконным запуском типа», я вытаскиваю свои волосы.Ошибка во время цикла

EDIT: ALL MY CODE AS REQUESTED

+1

(1) размещать весь код (если * то есть * весь код, в этом случае вам не хватает определение класса среди других вещей) (2) сообщите нам, какая строка дает ошибку компиляции. – assylias

+1

Я предполагаю, что проблема в том, что этот код не находится внутри метода >><< –

+0

Я отредактировал свой основной пост. –

ответ

0

Единственная проблема, которую я вижу в том, что вы не инициализирован clientName String. Вы должны инициализировать его с помощью "".

Вот исправленный фрагмент кода:

public static void main (String[] args) 
{ 
    String clientName = ""; 
    Scanner keyboard = new Scanner(System.in); 
    do 
    { 
     System.out.println("Enter your Name: "); 
     while (keyboard.hasNextInt()) 
     { 
      System.out.println("That's not a name!"); 
      keyboard.next(); 
      System.out.println("Enter your Name: "); 
     } 
     clientName = keyboard.nextLine(); 
    } while (clientName.equals("")); 
} 
+0

* "Вы должны инициализировать его с помощью' '' '' * *. И зачем ему это делать? Где вы видите улучшение? * «Вы должны использовать« Сканер »для ввода данных из« System.in ». * И как вы думаете,' 'клавиатура 'в его коде? Или другое: почему вы думаете, что это еще не «сканер»? – Tom

+0

@Tom Спасибо за ваш ответ. Я попросил его инициализировать его '' '', потому что он позже проверяет 'clientName.equals (" ")'. Если мы не инициализируем его, он выдает ошибку компилятора. Извините, я не понял, что «клавиатура» - это не что иное, как «Сканер». Обновлено решение. – user2004685

+0

Он инициализирует эту переменную внутри цикла do/while, поэтому ему будет присвоено значение, если оно достигнет проверки в части «while». Но вы, как правило, правы, нужно инициализировать свою переменную, или он получит ошибку компилятора. – Tom

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