import java.util.Scanner;
public class SecondWork3 {
public static void main(String[] args) {
// TODO 自动生成的方法存根
Scanner sc =new Scanner(System.in) ;
double BMI;
System.out.print("请输入你的性别:");
String sex = sc.next();
System.out.print("请输入你的体重:");
double weight =sc.nextDouble() ;
System.out.print("请输入你的身高:");
double height = sc.nextDouble();
BMI=weight/(height*height) ;
if(sex == "男")
{
if(BMI<=0)
{System.out.println("输入错误,请重新输入。");}
if(BMI<20)
{ System.out.println("你的BMI数值为" + BMI +",在男性中体重属于过轻,请注意补充营养。");}
if(BMI<25)
{ System.out.println("你的BMI数值为" + BMI +",在男性中体重属于较为正常,请继续保持。");}
if(BMI<30)
{ System.out.println("你的BMI数值为" + BMI +",在男性中体重属于过重,请注意锻炼身体。");}
if(BMI<35)
{ System.out.println("你的BMI数值为" + BMI +",在男性中体重属于肥胖,请注意合理安排饮食并坚持锻炼,加油!。");}
if(BMI>=35)
{ System.out.println("你的BMI数值为" + BMI +",在男性中体重属于非常肥胖,请合理安排饮食并坚持锻炼,相信你一定可以的。");}
}
else if(sex == "女")
{
if(BMI<=0)
{System.out.println("输入错误,请重新输入。");}
if(BMI<19)
{ System.out.println("你的BMI数值为" + BMI +",在女性中体重属于过轻,请注意补充营养。");}
if(BMI<24)
{ System.out.println("你的BMI数值为" + BMI +",在女性中体重属于较为正常,请继续保持。");}
if(BMI<29)
{ System.out.println("你的BMI数值为" + BMI +",在女性中体重属于过重,请注意锻炼身体。");}
if(BMI<34)
{ System.out.println("你的BMI数值为" + BMI +",在女性中体重属于肥胖,请注意合理安排饮食并坚持锻炼,加油!。");}
if(BMI>=34)
{ System.out.println("你的BMI数值为" + BMI +",在女性中体重属于非常肥胖,请合理安排饮食并坚持锻炼,相信你一定可以的。");}
}
}
}
字符串比较时不应该使用==,而应该使用equals(),例如"男".equals(sex)
。因为String是引用数据类型,==会比较两边变量的引用地址
看下你控制台输入的情况。输入身高后,会对你的性别做判断,只有输入男或者女才行,否则都不满足条件。
错误点:字符串比较用equals 增加点 如果输入不是男女 给他一个提示
改为如下代码
public static void main(String[] args) {
// TODO 自动生成的方法存根
Scanner sc = new Scanner(System.in);
double BMI;
System.out.print("请输入你的性别:");
String sex = sc.next();
System.out.print("请输入你的体重:");
double weight = sc.nextDouble();
System.out.print("请输入你的身高:");
double height = sc.nextDouble();
BMI = weight / (height * height);
if ("男".equals(sex)) {
if (BMI <= 0) {
System.out.println("输入错误,请重新输入。");
}
if (BMI < 20) {
System.out.println("你的BMI数值为" + BMI + ",在男性中体重属于过轻,请注意补充营养。");
}
if (BMI < 25) {
System.out.println("你的BMI数值为" + BMI + ",在男性中体重属于较为正常,请继续保持。");
}
if (BMI < 30) {
System.out.println("你的BMI数值为" + BMI + ",在男性中体重属于过重,请注意锻炼身体。");
}
if (BMI < 35) {
System.out.println("你的BMI数值为" + BMI + ",在男性中体重属于肥胖,请注意合理安排饮食并坚持锻炼,加油!。");
}
if (BMI >= 35) {
System.out.println("你的BMI数值为" + BMI + ",在男性中体重属于非常肥胖,请合理安排饮食并坚持锻炼,相信你一定可以的。");
}
} else if ("女".equals(sex)) {
if (BMI <= 0) {
System.out.println("输入错误,请重新输入。");
}
if (BMI < 19) {
System.out.println("你的BMI数值为" + BMI + ",在女性中体重属于过轻,请注意补充营养。");
}
if (BMI < 24) {
System.out.println("你的BMI数值为" + BMI + ",在女性中体重属于较为正常,请继续保持。");
}
if (BMI < 29) {
System.out.println("你的BMI数值为" + BMI + ",在女性中体重属于过重,请注意锻炼身体。");
}
if (BMI < 34) {
System.out.println("你的BMI数值为" + BMI + ",在女性中体重属于肥胖,请注意合理安排饮食并坚持锻炼,加油!。");
}
if (BMI >= 34) {
System.out.println("你的BMI数值为" + BMI + ",在女性中体重属于非常肥胖,请合理安排饮食并坚持锻炼,相信你一定可以的。");
}
} else {
System.out.println("请输入正确性别");
}
}
很明显呀,你只定义了一个扫描器,却想多次使用,导致最后只有身高,你运行的出来才叫不正常呢,你应该对他们都各自定义一个扫描器才行,
Scanner sc =new Scanner(System.in) ;
Scanner sc1 =new Scanner(System.in) ;
Scanner sc2 =new Scanner(System.in) ;
将下面你的代码改一下
Scanner sc =new Scanner(System.in) ;
double BMI;
System.out.print("请输入你的性别:");
String sex = sc.next();
System.out.print("请输入你的体重:");
double weight =sc.nextDouble() ;
System.out.print("请输入你的身高:");
double height = sc.nextDouble();
改成这个
Scanner sc =new Scanner(System.in) ;
Scanner sc1 =new Scanner(System.in) ;
Scanner sc2 =new Scanner(System.in) ;
double BMI;
System.out.print("请输入你的性别:");
String sex = sc.next();
System.out.print("请输入你的体重:");
double weight =sc1.nextDouble() ;
System.out.print("请输入你的身高:");
double height = sc2.nextDouble();
就可以啦