Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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_Validation_Calculator - Fatal编程技术网

如何在Java中验证用户输入

如何在Java中验证用户输入,java,validation,calculator,Java,Validation,Calculator,我编写了一个bmi计算器程序,我想验证用户输入,这样用户就不会为身高或体重输入负数 我该怎么做?我是Java新手,所以我不知道 import java.util.Scanner; 公共类BMI计算器{ 公共静态void main(字符串[]args)引发异常{ calculateBMI(); } 私有静态void calculateBMI()引发异常{ 系统输出打印(“请以千克为单位输入您的体重:”; 扫描仪s=新的扫描仪(System.in); 浮球重量=s.nextFloat(); Syst

我编写了一个bmi计算器程序,我想验证用户输入,这样用户就不会为身高或体重输入负数

我该怎么做?我是Java新手,所以我不知道

import java.util.Scanner;
公共类BMI计算器{
公共静态void main(字符串[]args)引发异常{
calculateBMI();
}
私有静态void calculateBMI()引发异常{
系统输出打印(“请以千克为单位输入您的体重:”;
扫描仪s=新的扫描仪(System.in);
浮球重量=s.nextFloat();
System.out.print(“请以厘米为单位输入您的身高:”);
浮动高度=s.nextFloat();
浮动体重指数=(100*100*体重)/(身高*身高);
System.out.println(“您的BMI为:“+BMI”);
印刷品类别(bmi);
s、 close();
}
专用静态无效打印bmi类别(浮动bmi){
如果(体重指数<24){
System.out.println(“你体重不足”);
}否则,如果(体重指数<29){
System.out.println(“你很健康”);
}否则,如果(bmi<34){
System.out.println(“您超重”);
}否则{
System.out.println(“你太胖了”);
}
}
}

当您从扫描仪获得输入时,您可以使用if语句来确保该值不是负值。例如:

if(input value <= 0){
    System.out.println("Invalid Input");
}else { *program continues* }

if(输入值在用户输入有效数字之前,您可以一直询问值

private float readZeroOrPositiveFloat(Scanner scanner , String promptMessage) 
{
     float value = -1;
     while(value < 0){
         System.out.println(promptMessage);
         value = scanner.nextFloat();
     }
     return value;
}


private static void calculateBMI() throws Exception {
    System.out.print("Please enter your weight in kg: ");
    Scanner s = new Scanner(System.in);
    float weight = readZeroOrPositiveFloat(s , "Please enter your weight in kg: ");
    float height = readZeroOrPositiveFloat(s , "Please enter your height in cm: ");
     
    float bmi = (100*100*weight)/(height*height);
     
    System.out.println("Your BMI is: "+bmi);
    printBMICategory(bmi);

    s.close();
   
}
private float readzero或positivefloat(扫描仪、字符串提示消息)
{
浮动值=-1;
while(值<0){
System.out.println(promptMessage);
value=scanner.nextFloat();
}
返回值;
}
私有静态void calculateBMI()引发异常{
系统输出打印(“请以千克为单位输入您的体重:”;
扫描仪s=新的扫描仪(System.in);
浮子重量=读取零或正浮子,“请以千克为单位输入您的重量:”;
float height=readzero或positivefloat(s,“请以厘米为单位输入您的高度:”;
浮动体重指数=(100*100*体重)/(身高*身高);
System.out.println(“您的BMI为:“+BMI”);
印刷品类别(bmi);
s、 close();
}

只需处理
负面输入,并不断请求有效输入

boolean flag = true;
while(flag){
    System.out.print("Please enter your weight in kg: ");
    int weight = sc.nextInt();
    System.out.print("Please enter your height in cm: ");
    int height = sc.nextInt();
    if(weight >= 0 && height >= 0){
        float bmi = (100*100*weight)/(height*height);
        flag = false;
    }else{
        System.out.println("Invalid Input");
    }
}
boolean flag = true;
    while(flag){
        Scanner sc = new Scanner(System.in);
        try{
            System.out.print("Please enter your weight in kg: ");
            int weight = sc.nextInt();
            System.out.print("Please enter your height in cm: ");
            int height = sc.nextInt();
            if(weight >= 0 && height >= 0){
                float bmi = (100*100*weight)/(height*height);
                flag = false;
            }else{
                System.out.println("Invalid Input");
            }
        }catch(Exception e){
            System.out.println("Invalid Input");
        }
    }
要处理所有
意外的
输入并不断请求有效输入

boolean flag = true;
while(flag){
    System.out.print("Please enter your weight in kg: ");
    int weight = sc.nextInt();
    System.out.print("Please enter your height in cm: ");
    int height = sc.nextInt();
    if(weight >= 0 && height >= 0){
        float bmi = (100*100*weight)/(height*height);
        flag = false;
    }else{
        System.out.println("Invalid Input");
    }
}
boolean flag = true;
    while(flag){
        Scanner sc = new Scanner(System.in);
        try{
            System.out.print("Please enter your weight in kg: ");
            int weight = sc.nextInt();
            System.out.print("Please enter your height in cm: ");
            int height = sc.nextInt();
            if(weight >= 0 && height >= 0){
                float bmi = (100*100*weight)/(height*height);
                flag = false;
            }else{
                System.out.println("Invalid Input");
            }
        }catch(Exception e){
            System.out.println("Invalid Input");
        }
    }

一种简单的方法是使用while循环不断请求输入,直到给出有效的输入。
while(height<0){height=s.nextFloat();}