无法让一个 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--> 您不会获得此方法及其变体所需的输出,因为您没有初始化因变量。
这些都是提示。尝试一下。
大家好,我在从一个 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--> 您不会获得此方法及其变体所需的输出,因为您没有初始化因变量。
这些都是提示。尝试一下。