gpt4 book ai didi

java - 我的扫描仪会跳过下一个 double 型和下一个整数吗?

转载 作者:行者123 更新时间:2023-12-01 13:57:26 26 4
gpt4 key购买 nike

每当我运行扫描仪时,它都会跳过重量后的高度(双)循环。它还会在年龄之后跳过 level(int) 循环。

这是我的扫描仪类。

导入java.util.Scanner;

 public class HowHealthy
{
public static void main(String[] args)
{
String aGender = "";

//New healthy objec tis created
Healthy person = new Healthy();

//Scanner object is created
Scanner in = new Scanner(System.in);

String name = "";
while(!person.setName(name))
{
System.out.print("Person's name: ");
name = in.nextLine();
if(!person.setName(name))
{
System.out.println("Invalid name - must be at least one character!");
}
}

char gender = '\0';
while(!person.setGender(gender))
{
System.out.print(name + ", are you male of female (M/F): ");
gender = in.nextLine().toUpperCase().charAt(0);
if(!person.setGender(gender))
{
System.out.println("Invalid gender - must be M or F (upper or lower case)":
}
}

double weight = 0;
while(!person.setWeight(weight))
{
System.out.print(name + "'s weight (pounds): ");
weight = in.nextDouble();
in.nextLine();
if(!person.setWeight(weight))
{
System.out.println("Invalid weight - must be at least 100 pounds!");
}
}

double height = 0;
while(!person.setHeight(height))
{
System.out.print(name + "'s height (inches): ");
height = in.nextDouble();
if(!person.setHeight(height))
{
System.out.println("Invalid height - must be 60..84, inclusively!");
}
}

int age = 0;
while(!person.setAge(age))
{
System.out.print(name + "'s age (years): ");
age = in.nextInt();
in.nextLine();
if(!person.setAge(age))
{
System.out.println("Invalid age - must be at least 18!");
}
}

System.out.println();

System.out.println("Activity Level: Use these categories:");
System.out.println("\t1 - Sedentary (little or no exercise, desk job)");
System.out.println("\t2 - Lightly active (little exercise / sports 3-5 days/wk");
System.out.println("\t3 - Moderately active(moderate exercise / sports 3-5
System.out.println("\t4 - Very active (hard exercise / sports 6 -7 day/wk)");
System.out.println("\t5 - Extra active (hard daily exercise / sports \n\t physica2X)

int level = 0;
while(!person.setLevel(level))
{
System.out.print("How active are you? ");
level = in.nextInt();
if(!person.setLevel(level))
{
System.out.println("Invalid acitvity level - must be 1..5, inclusively!");
}
}


System.out.println();

//Creates a new Healthy object and prints values based on user's input

System.out.println(person.getName()+ "'s information");
System.out.printf("Weight: %.1f %s \n", person.getWeight(), "pounds");
System.out.printf("Height: %.1f %s \n", person.getHeight(), "inches");
System.out.println("Age: " + person.getAge() + " years");

if (gender == 'M')
{
aGender = "male";
}
else
{
aGender = "female";
}
System.out.println("These are for a " + aGender);
System.out.println();

//Calculates the person's BMR, BMI and TDEE based on user input
System.out.printf("BMR is %.2f \n", person.calcBMR());
System.out.printf("BMI is %.2f \n", person.calcBMI());
System.out.printf("TDEE is %.2f \n", person.calcTDEE());

//Determines person's weight status based on BMI calculated
double BMI = person.calcBMI();

//Displays person's weight status
System.out.println("Your BMI classifies you as " + person.calcWeightStatus());

}
}

这是我的扫描仪类(class)。

最佳答案

在这两种情况下,执行 in.nextInt() 后都会丢失 in.nextLine()。如果所有其他代码行都使用 in.nextDouble()in.nextLine() 之类的东西工作,我的猜测是这就是缺少的内容。

关于java - 我的扫描仪会跳过下一个 double 型和下一个整数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19555926/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com