Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-如果用户输入无效的输入,我如何返回异常?_Java_Calculator_Jgrasp - Fatal编程技术网

Java-如果用户输入无效的输入,我如何返回异常?

Java-如果用户输入无效的输入,我如何返回异常?,java,calculator,jgrasp,Java,Calculator,Jgrasp,说到编码,我完全是个初学者。我目前正在当地社区学院上编程课。我们被指派创建一个计算用户BMI(体重指数)的程序 我已经设法创建了程序的基本结构,用户在其中输入体重和身高,并将其计算到BMI中。然而,我正在努力创建一个标准 其中显示以下任何无效输入: 高度不小于48英寸 高度不超过80英寸 重量不小于75磅 重量不超过300磅 示例交互 请以英寸为单位输入您的身高:20 很抱歉,您输入的高度无效 请以英寸为单位输入您的身高:62 请以磅为单位输入您的体重:x 对不起,您没有输入磅数 我有一个

说到编码,我完全是个初学者。我目前正在当地社区学院上编程课。我们被指派创建一个计算用户BMI(体重指数)的程序

我已经设法创建了程序的基本结构,用户在其中输入体重和身高,并将其计算到BMI中。然而,我正在努力创建一个标准

其中显示以下任何无效输入:

  • 高度不小于48英寸
  • 高度不超过80英寸
  • 重量不小于75磅
  • 重量不超过300磅
示例交互

请以英寸为单位输入您的身高:20
很抱歉,您输入的高度无效

请以英寸为单位输入您的身高:62
请以磅为单位输入您的体重:x
对不起,您没有输入磅数


我有一个想法,因为人们建议使用try,catch语句。我已经试过了,但我似乎能找到答案

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 + ".");

    }
}
import java.util.*;
公共类BMI{
公共静态void main(字符串[]arg){
//体重指数计算器
扫描仪键盘=新扫描仪(System.in);
最终双倍BMI_换算=703.0;//用于BMI计算的磅/英寸到千克/米
双体massindex;
双倍高度=0;
双倍重量=0;
字符串bmi类别=”;
//用户输入
//英寸
系统输出打印(“你的身高是多少英寸?”);
高度=键盘.nextDouble();
//磅
系统输出打印(“你的体重是多少磅?”);
权重=键盘.nextDouble();
//计算体重指数
bodyMassIndex=体重*体重指数换算/(身高*身高);
如果(车身质量指数<18.5)
{ 
bmicontegory=“在体重不足时考虑”;
} 

否则,如果(bodyMassIndex>=18.5&&bodyMassIndex请查看“
public void functionName()抛出InvalidInputException

如果要使用异常,您需要重新组织程序。异常意味着您将在函数外有一个try/catch块,该块抛出异常

1) -创建具有计算所需文件的类,并创建计算方法

2) -创建对输入周期有响应的类,每个变量都有单独的函数。如果值无效,此方法应引发异常。创建主函数,该函数将调用所有必要的函数来读取数据,并将其关闭到try/catch块中 像这样

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();

希望我能回答你的问题!

首先,打开你的代码并寻求帮助是违反网站规则的

无论如何,在您的代码中,您需要循环您的输入(而值设置为true的循环是最好的选择),在这个循环中,您检查输入是否符合您的条件。如果符合条件,则打破循环

这样你就可以坚持你的标准,并在最后得到BMI


另外,这里使用的概念是循环和打破循环,为了更好地理解,您可以在线查看一些示例。

好吧……不要为此使用异常。这是一种糟糕的风格。您有什么具体的困难?您提供的代码中没有try/catch语句。