如何在Java中验证用户输入
我编写了一个bmi计算器程序,我想验证用户输入,这样用户就不会为身高或体重输入负数 我该怎么做?我是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
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();}