2013-12-04 6 views
0
System.out.print("Price of the book? "); 
     while (!keyboard.hasNextDouble() || priceOfBook <=0) 
     { 
     System.err.print("Invalid input - Price of " + bookTitle + "? "); 
     keyboard.nextLine(); 
     } 
     priceOfBook = keyboard.nextDouble(); 

Я пытаюсь проверить этот код в основном так, чтобы пользователь не мог вводить отрицательные числа или буквы или пустые парные разряды, но он не работает, и я не вижу, где я ошибаюсь. Может кто-нибудь, пожалуйста, помогите мне?Validation for Negative numbers

+1

Что происходит именно так? – broncoAbierto

+0

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

ответ

0

Так как я понимаю, вы не должны реальной линии, пока пользователь didint введите отрицательное или письмо.

Scanner sc = new Scanner(System.in); 
    double x = 0; 
    System.out.println("Enter price"); 

    while (true) { 
     if (!sc.hasNextDouble()) { 
      System.out.println("Sorry price cant be negative or be letter"); 
      break; 
     } 
     System.out.println("Enter price"); 
     x = sc.nextDouble(); 
    } 

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

0

Вы кладете

priceOfBook = keyboard.nextDouble(); 

за пределами вашего цикла в то время как :) Попробуйте так:

while (priceOfBook <= 0) 
{ 
    System.err.print("Invalid input - Price of " + bookTitle + "? "); 
    priceOfBook = keyboard.nextDouble(); 
} 

Так что он будет продолжать спрашивать пользователя, если он входит в число < 0.

0

Вы не назначаете ввод пользователя priceOfBook до послеwhile петля. Итак, когда ваш цикл проверяет, является ли priceOfBook отрицательным, он не проверяет вход пользователя, а ранее сохраненное значение (если оно есть). Это позволяет пользователю вводить (даже если это отрицательно) передать цикл while, а затем сохранить его как priceOfBook.

Попробуйте вместо этого:

while (!keyboard.hasNextDouble() || priceOfBook = keyboard.nextDouble() <=0) { 
    System.err.print("Invalid input - Price of " + bookTitle + "? "); 
    keyboard.nextLine(); 
}