2016-02-25 1 views
1

Я полный новичок, когда дело доходит до кодирования. В настоящее время я занимаюсь классом программирования в местном колледже. Нам было предоставлено задание создать программу, которая вычисляет индекс массы тела (индекс массы тела) пользователя.Java - Как я могу вернуть исключение, если пользователь вводит недопустимый ввод?

Мне удалось создать базовую структуру программы, где пользователь вводит туда вес и высоту и вычисляет ее в ИМТ, однако есть один критерий, который я пытаюсь создать.

В, который должен отображать любые недействительные входы следующих

  • Высота не менее 48 дюймов
  • высота составляет не более 80 дюймов
  • вес не менее 75 фунтов
  • вес не более 300 фунтов

Пример взаимодействиях

Пожалуйста, введите ваш рост в дюймах: 20
извините, вы должны ввести высоту, которая не действует

Пожалуйста, введите ваш рост в дюймах: 62
Пожалуйста, введите свой вес в фунтах: х
извините, вы не ввели номер в фунтах


Я вроде есть идея, так как люди предполагают использовать попытку, поймать заявление. Я попытался, но я могу понять это.

import java.util.*; 
public class BMI { 

    public static void main(String[ ] arg){ 

     // BMI calculator 
     Scanner keyboard = new Scanner (System.in); 
     final double BMI_CONVERSION = 703.0; // pounds/inches to kilograms/meters for BMI calculations 

     double bodyMassIndex; 
     double height = 0; 
     double weight = 0; 
     String BMICategory = ""; 

     // user inputs 

     // inches 
     System.out.print("What's your height in inches? "); 
     height = keyboard.nextDouble(); 

     // Pounds 
     System.out.print("What's you weight in pounds? "); 
     weight = keyboard.nextDouble(); 

     // Calculate BMI 
     bodyMassIndex = weight * BMI_CONVERSION/(height * height); 
     if (bodyMassIndex < 18.5) 
     { 
      BMICategory = "considered at a underweight"; 
     } 
     else if (bodyMassIndex >= 18.5 && bodyMassIndex <= 25) 
     { 
      BMICategory = "considered at a optimal weight"; 
     } 
     else 
     { 
      BMICategory = "considered overweight"; 
     } 


     // output 
     System.out.println("Your BMI is: " + bodyMassIndex + ", You are " +  BMICategory + "."); 

    } 
} 
+2

Ну ... Не используйте исключения для этой цели. Это плохой стиль. –

+0

Какая конкретная трудность у вас есть? В коде кода вы не указываете инструкции try/catch. – jmoerdyk

ответ

-1

Посмотрите на "public void functionName() throws InvalidInputException".

0

Вам необходимо реорганизовать свою программу, если вы хотите использовать исключения. Исключение означает, что у вас есть блок try/catch вне функции, которая выдает исключение.

1) - Создайте класс, который будет иметь необходимые поля для вычислений и метод вычисления.

2) - Создайте класс, который будет реагировать на входной цикл, с отдельными функциями для каждого varialbe. Этот метод должен бросить исключение, если значение invalid.Create мастер-функция, которая будет вызывать все функции, необходимые для чтения данных и закрыть его в блок Try/поймать Как это

public BMI masterFunc(){ 

try{ 


    readFirst(); 

    readSecond(); 

    //etc.... 
    BMI obj = new BMI(); 
    //set you params to new created class BMI 
    //and return it from func 
    return obj; 

}catch(Exception e){ 

    return null; 

} 

} 

Теперь вы можете положить его в цикле в основном как

BMI obj = null; 

while(obj == null) 
    BMI obj = ReaderClass.masterFunc(); 

Надеюсь, я мог бы ответить на ваш вопрос!

-1

Прежде всего, ввод кода и прошение о помощи противоречит правилам веб-сайта.

В любом случае, в вашем коде вам нужно зацикливать ваш вход (хотя цикл со значением, установленным как true, будет лучшим выбором), в этом цикле вы проверяете, попадает ли вход в ваши критерии. Если это так, вы выходите из цикла.

Таким образом, вы можете придерживаться своих критериев и получить ИМТ в конце.

П. С. понятие, используемое здесь, перекручивание и выход из цикла, вы можете проверить некоторые примеры онлайн для лучшего понимания

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

  • Нет связанных вопросов^_^