2014-10-14 2 views
1

Так что я должен пригласить пользователя ввести любое двойное значение, если это не двойное значение. Я предполагаю, что сбросит буфер, а затем запросит для другого значения, затем распечатайте значение, если оно двойное.Почему это не работает? Я пытаюсь написать небольшую программу, которая предлагает пользователю ввести любое двойное значение

double value; 
    Scanner sc = new Scanner(System.in); 

    System.out.println("Enter any double value: "); 
    value = sc.nextDouble(); 

    while (!sc.hasNextDouble()) 
     { 
      sc.nextLine(); 

      System.out.println("Enter a valid value: "); 
      value = sc.nextDouble(); 

     } 
    System.out.println(value); 
+0

Может хотите добавить именно то, что вы получаете, когда вы запускаете его против того, что вы ожидаете (как и на входе) – user2813274

ответ

1

Сменный порядок цикла

// value = sc.nextDouble(); 
while (!sc.hasNextDouble()) // <-- while we don't have a double 
    { 
     sc.nextLine(); 

     System.out.println("Enter a valid value: "); 
     // value = sc.nextDouble(); 
    } 
value = sc.nextDouble(); // <-- here 
+0

Спасибо Elliott, которые помогли много. – Carpmeister

0

Я предлагаю использовать делать во время цикла, чтобы сохранить необходимости получить вход в двух местах в коде. Затем убедитесь, что вы назначаете переменную значения вне цикла.

double value; 
Scanner sc; 

do{ 
    System.out.println("Enter any double value: "); 
    sc = new Scanner(System.in); 
}while(!sc.hasNextDouble()); 

value = sc.nextDouble(); 
System.out.println(value); 
Смежные вопросы