gpt4 book ai didi

java - 输出有问题

转载 作者:行者123 更新时间:2023-12-01 23:36:06 25 4
gpt4 key购买 nike

这就是我必须做的“编写一个 java 应用程序,提示输入该人的信息,实例化该人的 Health Profile 类的对象,并打印该对象中的信息 - 包括该人的名字,姓氏、性别、出生日期、高度和体重——然后计算并打印该人的年龄、BMI、最大心率和目标心率范围。它还应该显示练习 2 中的“BMI 值”图表。 33 。”但是每当我运行它时我都会收到错误。

这是代码:

import java.util.*;
public class HealthProfile {

String firstName;
String lastName;
char gender;
int BirthMonth;
int BirthDay;
int BirthYear;
int height;
int weight;

public HealthProfile(String fName, String lName, char Genderr, int birthMonth, int birthDay, int birthYear, int heightt, int weightt){
firstName = fName;
lastName = lName;
gender = Genderr;
BirthMonth = birthMonth;
BirthDay = birthDay;
BirthYear = birthYear;
height = heightt;
weight = weightt;



}

HealthProfile() {

}

public void setFirstName(String firstName) {
this.firstName = firstName;
}

public String getFirstName() {
return firstName;
}

public void setLastName(String lastName) {
this.lastName = lastName;
}

public String getLastName() {
return lastName;
}

public void setGender(char gender) {
this.gender = gender;
}

public char getGender() {
return gender;
}

public void setBirthMonth(int BirthMonth) {
this.BirthMonth = BirthMonth;
}

public int getBirthMonth() {
return BirthMonth;
}

public void setBirthDay(int BirthDay) {
this.BirthDay = BirthDay;
}

public int getBirthDay() {
return BirthDay;
}

public void setBirthYear(int BirthYear) {
this.BirthYear = BirthYear;
}

public int getBirthYear() {
return BirthYear;
}

public void setHeight(int height) {
this.height = height;
}

public double getHeight() {
return height;
}

public void setWeight(int weight) {
this.weight = weight;
}

public double getWeight() {
return weight;
}

public int Age(){
Calendar now = Calendar.getInstance();
int nowYear = now.get(Calendar.YEAR);
int nowMonth = now.get(Calendar.MONTH);
int nowDay = now.get(Calendar.DATE);
int day = now.get(Calendar.DATE);
int month = now.get(Calendar.MONTH);
int year = now.get(Calendar.YEAR);
if (nowMonth > BirthMonth);
return (nowYear - BirthYear);
}

public double getBMI(){
return (weight * 703)/(height * height);
}

public int MaxHeartRate(){
return 220-Age();
}

public double TargetHeartRate(){
return MaxHeartRate() * 0.85 + MaxHeartRate() * 0.5;
}
}

这是测试部分:

import java.util.Scanner;

public class HealthProfileTest {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String firstName;
String lastName;
String DoB;
String theMonth;
String theDay;
String theYear;
char gender;
int Month;
int Day;
int Year;
double height = 0.0;
double weight;
HealthProfile personalInfo = new HealthProfile();
System.out.println("Enter your first name: ");
firstName = input.nextLine();
System.out.println("Enter your last name: ");
lastName = input.nextLine();
System.out.println("Male or female: ");
gender = input.nextLine().charAt(0);
System.out.println("Enter your date of birth in mm/dd/yyyy format: ");
DoB = input.nextLine();
theMonth = DoB.substring(0,2);
theDay = DoB.substring(3,5);
theYear = DoB.substring(6,10);
Month = Integer.parseInt(theMonth);
Day = Integer.parseInt(theDay);
Year = Integer.parseInt(theYear);
System.out.println("Enter your height in inches: ");
height = input.nextInt();
System.out.println("Enter your weight in pounds: ");
weight = input.nextInt();
System.out.println("Name: " + personalInfo.getFirstName() + personalInfo.getLastName());
System.out.println("Gender: " + personalInfo.getGender());
System.out.println("DoB: " + personalInfo.getBirthMonth() + "/" + personalInfo.getBirthDay() + "/" + personalInfo.getBirthYear());
System.out.println("Height: " + personalInfo.getHeight());
System.out.println("Weight: " + personalInfo.getWeight());
System.out.println("Age: " + personalInfo.Age());
System.out.println("BMI: " + personalInfo.getBMI());
System.out.printf("Max heart rate: ", personalInfo.MaxHeartRate());
System.out.printf("Target heart rate: ", personalInfo.TargetHeartRate());
System.out.println(" ");
System.out.println( "BMI VALUES" );
System.out.println("Underweight: Under 18.5");
System.out.println("Normal: 18.5-24.9 ");
System.out.println("Overweight: 25-29.9");
System.out.println("Obese: 30 or over");
}
}

这是输出:

Name: nullnull
Gender:
DoB: 0/0/0
Height: 0.0
Weight: 0.0
Age: 2013
Exception in thread "main" java.lang.ArithmeticException: / by zero
at HealthProfile.getBMI(HealthProfile.java:108)
at HealthProfileTest.main(HealthProfileTest.java:43)
Java Result: 1

我知道我做的一切都是对的,但就是不明白为什么会出现这种情况。

最佳答案

您忘记调用方法setHeightsetWeight。因此,由于这些值是数字基元类型,因此默认情况下它们仍然为 0。显然,2 个零值的乘积等于 0,然后除以 0 会产生 ArithmeticException

尝试在接受输入后调用方法。

System.out.println("Enter your height in inches: ");
height = input.nextInt();
personalInfo.setHeight((int) height);
System.out.println("Enter your weight in pounds: ");
weight = input.nextInt();
personalInfo.setWeight((int) weight);

类似地设置“出生”字段

personalInfo.setBirthMonth(Month);
personalInfo.setBirthDay(Day);
personalInfo.setBirthYear(Year);

旁白:Java 命名约定表明变量以小写字母开头,例如 >。了解它们 here

关于java - 输出有问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18668100/

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