当有多个if语句时,java会立即显示错误消息。我的程序在两者都输入后显示错误消息
如果用户输入了无效的体重或年龄,程序应立即显示错误消息并结束程序。输入年龄和体重后,我的程序会显示一条错误消息。有人能帮我吗?示例:用户在switch语句中输入1,以选择以月为单位输入年龄,以千克为单位输入体重。如果用户在几个月内输入-5,则应立即显示错误消息并结束程序。相反,我的程序所做的是在为年龄输入-5之后,它会提示用户输入体重。输入重量后,它会给我错误信息并结束程序。任何帮助都将不胜感激
import java.util.Scanner;
import java.lang.Math;
public class infant{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int number;
double ageMonths = 0;
double ageYears = 0;
double weightPounds = 0;
double weightKg = 0;
System.out.println( "Choice 1 input the age in months, then weight in kilograms"); // this tells the user what the numbers 1-4 does when chosen
System.out.println( "Choice 2 input the age in years, weight in kilograms");
System.out.println( "Choice 3 input the age in months, weight in pounds");
System.out.println( "Choice 4 input the age in years, weight in pounds");
number =sc.nextInt();
if(number<=4 && number>=1){ // if statement that makes the user enter a value from 1 to 4 for the switch statment.
System.out.println("valid number selection");
}else{ System.out.println("need to choose a number between 1 and 4");
return;
}
switch(number){ // switch statment that allows the user to choose how they want to enter the height and weight
case 1: System.out.println("age in months: "); ageMonths =sc.nextDouble();
System.out.println("weight in kilograms: "); weightKg =sc.nextDouble();
ageYears = ageMonths * 0.0833334; // this switch statment also converts Kg to pounds and years to months in order for math equation in the if statement at then end of the program to work.
weightPounds = weightKg * 2.20462;
break;
case 2: System.out.println("age in years: "); ageYears =sc.nextDouble();
System.out.println("weight in kilograms: "); weightKg =sc.nextDouble();
ageMonths = ageYears * 12;
weightPounds = weightKg * 2.20462;
break;
case 3: System.out.println("age in months: "); ageMonths =sc.nextDouble();
System.out.println("weight in pounds: "); weightPounds =sc.nextDouble();
ageYears = ageMonths * 0.0833334;
weightKg = weightPounds * 0.453592;
break;
case 4: System.out.println("age in years: "); ageYears =sc.nextDouble();
System.out.println("weight in pounds: "); weightPounds =sc.nextDouble();
ageMonths = ageYears * 12;
weightKg = weightPounds * 0.453592;
break;
default: System.out.println("you entered in an invalid number");
}
if(ageMonths<=24 && ageMonths>-0.1){ // if statement that makes sure the ages are in the correct range
System.out.println("valid age input");
}else if(ageYears>-0.1 && ageYears<=2){
System.out.println("valid age input");
}else{ System.out.println("You entered a invaild age 0 to 24 months only");
return;
}
if(weightPounds>=4.40925 && weightPounds<=33.0693 || weightKg>=2 && weightKg<=15){ // if statement that makes sure the weight are in the correct range
System.out.println("valid weight input");
}else{ System.out.println("You entered a invaild weight 2kg to 15kg only");
return;
}
if(weightKg >= ageYears * ageMonths / 3 + 2 && weightKg <= 5 * ageYears * ageMonths / 12 + 5){ // if statement that does a math equation to determine if your infant is healthy or not
System.out.println(" your infant is healthy");
}else{ System.out.println(" your infant is not healthy");
}
}
}
# 1 楼答案
若你们真的想用无效的输入结束你们的程序,你们可以使用系统。退出(0)而不是“返回”这肯定会结束这个计划
例如:
除非我弄错了,否则应该在print语句之后立即终止主线程
# 2 楼答案
用于检查权重和月份的代码,您将这两种代码保存在一些不同的函数中,然后在输入月份后将其放入开关盒中,然后在输入月份后调用函数,然后您可以对权重执行相同的操作,这样您就可以拥有所需的结构。。一定要问你是否需要任何澄清
请根据您的用法更改函数参数中的变量名