无法让一个 class 的方法使用 Java 中另一个 class 的用户输入

Unable to have methods from one class use user input from another class in Java

大家好,我在从一个 class 获取用户输入以用于另一个 class' 方法时遇到了一些问题(当我尝试使用输入的数据时,要么什么都没有出现,或者如果所有数字都为零)。这是两个 classes,第一个包含 setter 和 getter,另一个 class 包含接受用户输入的主要方法,应该 运行 它通过其他class中写的方法,然后打印出结果。这是第一个class:

public class HeartRates {
//Declaration
public int month;
public int day;
public int year;
public int currentYear;
public int currentAge;
public int maxHeartRate;
public double targetHeartRate50;
public double targetHeartRate85;
public String dateOfBirth = month + "/" + day + "/" + year;

//Setters and Getters
public void setMonth(int month){
    this.month = month;
}
public int getMonth(){
    return month;
}

public void setDay(int day){
    this.day = day;
}
public int getDay(){
    return day;
}

public void setYear(int year){
    this.year = year;
}
public int getYear(){
    return year;
}

public String dateOfBirth(){
    return month + "/" + day + "/" + year;
}

public void setcurrentYear(int currentYear){
    this.currentYear = currentYear;
}
public int getcurrentYear(){
    return currentYear;
}

//Methods for finding the info
public int currentAge(){
    currentAge = currentYear - year;
    return currentAge;
}
public int maxHeartRate(){
    maxHeartRate = 220 - currentAge;
    return maxHeartRate;
}
public double targetHeartRate50(){
    targetHeartRate50 = maxHeartRate * 0.5;
    return targetHeartRate50;
}
public double targetHeartRate85(){
    targetHeartRate85 = maxHeartRate * 0.85;
    return targetHeartRate85;
}
}

这里是第二个 class 应该接受用户输入,运行 它通过方法,然后输出答案:

import java.util.Scanner;

public class HeartRatesTest {
    public static void main(String[]args){
    HeartRates HeartRate1 = new HeartRates();

    Scanner input = new Scanner(System.in);

    System.out.print("Enter your first name: ");
    String firstName = input.nextLine();

    System.out.print("Enter your last name: ");
    String lastName = input.nextLine();

    System.out.print("Enter your birth month (interger): ");
    int month = input.nextInt();

    System.out.print("Enter the day you were born in (integer): ");
    int day = input.nextInt();

    System.out.print("Enter the year you were born in (full year): ");
    int year = input.nextInt();

    System.out.print("Enter the current year (full year): ");
    int currentYear = input.nextInt();

    System.out.println(firstName);
    System.out.println(lastName);
    System.out.println("--------");
    System.out.printf(HeartRate1.dateOfBirth);
    System.out.println(HeartRate1.currentAge);
    System.out.println(HeartRate1.maxHeartRate);
    System.out.println(HeartRate1.targetHeartRate50);
}
}

我已经做了好几个小时了,但进展甚微。同样的问题是我如何做到这一点,以便在第一个 class 底部的方法中使用用户输入数据,然后使用第二个 class 将结果数据输出给用户?

现在你没有调用你的设置器,什么都不做是在你的对象上设置的。您只需要这样的行:HeartRate1.setYear(currentYear); 作为旁注变量应该是小驼峰。所以 HeartRate1 应该是 heartRate1。此外,您应该将 class 级别变量设为私有,并改为在打印语句中调用 getter。

你有很多工作要做。

让我们一一来, 1)您已经创建了一个 HeartRates 对象,但您没有向其中存储任何值。仅仅定义 setters 不会完成你的工作。初始化示例。

System.out.print("Enter the year you were born in (full year): ");
HeartRate1.year     = input.nextInt(); 

其余同理。现在,它所做的是将输入值存储到一个对象 HeartRate1 中。(在 HeartRate1-> 中,一个名为 year 的变量)。

2)你得到零? 这些是默认值。默认值,当你不初始化你的变量时,你会得到这些值。尝试访问 String 你会得到 null.

3)

System.out.println(HeartRate1.maxHeartRate);

在这种情况下,您正试图访问一个尚未初始化的变量。所以首先通过调用 setter 方法来设置变量。你已经定义了一些功能和东西class。

4) targetHeartRate50--> 您不会获得此方法及其变体所需的输出,因为您没有初始化因变量。

这些都是提示。尝试一下。