2017-01-07 4 views
-4

Я начинаю, и мне нужно написать код, который вычисляет площадь и окружность из радиуса, который дает мне пользователь. эта часть была простой, но учитель также хотел, чтобы я принимал только действительные целые числа и возвращал пользователю значение, когда его ввод неверен ...Как я могу отобразить сообщение об ошибке в Java

, так что я смог отобразить сообщение об ошибке для каждого кроме случая, когда они входят в отрицательное целое число:

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

    Scanner input = new Scanner(System.in); 
    int radius; 
    do { 
    System.out.print("Please enter size of radius (Must be integer): "); 
    while (!input.hasNextInt()) { 
     System.out.print("That is not a valid number, please try again :"); 
     input.next(); 
    } 

    radius = input.nextInt(); 

    } while (radius < 0); 

    System.out.println("The radius is: " + radius); 

    } 
} 

и так это то, что я получаю в результате:

Пожалуйста, введите размер радиуса (должен быть целым числом): AAA

это не является av Алид номер, пожалуйста, попробуйте еще раз: 4,5555

Это не правильный номер, пожалуйста, попробуйте еще раз: -5

Пожалуйста, введите размер радиуса (должен быть целым числом): -5

Пожалуйста, введите размер радиус (должен быть целым числом): -8.777

Это не является допустимым числом, пожалуйста, попробуйте еще раз: -4

Пожалуйста, введите размер радиуса (должно быть целым):

** поэтому всякий раз, когда его отрицательное целое число не отображает сообщение об ошибке ...

как я могу исправить это, пожалуйста?

+3

ПОЖАЛУЙСТА, НЕ ВЫЗЫВАЙТЕ. Кроме того, пожалуйста, отформатируйте свой вопрос, чтобы мы могли оптимально помочь вам. – Li357

+0

Подсказка: '-5' в порядке относительно' hasNextInt' –

+0

Я понимаю, что и я поймаю эту ошибку, идя в то время как (радиус <0) внизу, но я хочу, чтобы он отображал сообщение об ошибке, и я застрял. Я не знаю, как это сделать. Я думал об использовании: while (! input.hasNextInt() || radius <0), но это тоже не сработало. – Brow

ответ

2

Есть много способов сделать это, но самый простой для вас, как новичок будет добавить if заявление между вашим назначением на radius и конец вашего внешнего время цикла:

if (radius < 0) { 
    System.out.print("The radius must not be negative, please try again :"); 
} 
+0

это не работает, потому что вы получаете: Это не правильный номер, пожалуйста, попробуйте еще раз: -5 Радиус не должен быть отрицательным, пожалуйста, попробуйте еще раз: Пожалуйста, введите размер радиуса (должен быть целым числом): поэтому теперь он повторяет два сообщения. – Brow

+0

Затем просто переместите свой первый вызов System.out.print() перед «do», поэтому он находится вне внешнего цикла. –

+0

спасибо, что сработало. – Brow

1

Если Я правильно ответил на ваш вопрос, тогда вам не нужно использовать !input.hasNextInt(). Так вы это делаете.

import java.util.Scanner; 

public class GetCircle { 
public static void main(String[] args) { 
Scanner input = new Scanner(System.in); 
    int radius = 0; 
    System.out.print("Please enter size of radius (Must be integer): "); 
    while (true){ 
     if(input.hasNextInt()){ 
     radius = input.nextInt(); 
     if (radius < 0){ 
      System.out.println("That is not a valid number, please try again :"); 
      System.out.println("Please enter size of radius (Must be integer): ");    
     } else { 
     System.out.println("The radius is: " + radius); 
     } 
     } else { 
      System.out.println("That is not a valid number, please try again :"); 
      System.out.println("Please enter size of radius (Must be integer): "); 
      input.next(); 

     } 
    } 
} 
} 
+0

Мы еще не научились использовать попытаться поймать еще и поэтому я не могу использовать его .. – Brow

+0

спасибо любезно – Brow

+0

Пожалуйста, введите размер радиуса (должен быть целым числом): -5 Радиус: -5 так это не отображал сообщение об ошибке ... – Brow

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