[英]Unable to have methods from one class use user input from another class in Java
大家好,我遇到了一个问题,要从一个类中获取用户输入以用于另一类的方法中(当我尝试使用输入的数据时,要么什么都没有出现,或者某些数字的确为零) )。 这是两个类,第一个包含setter和getter,第二个包含用于接收用户输入的main方法的类,应该通过另一个类中编写的方法来运行它,然后打印结果。 这是头等舱:
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;
}
}
这是第二类,应该接受用户输入,通过方法运行它,然后输出答案:
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);
}
}
我已经在这里待了几个小时,而且进展甚微。 同样,问题是我该如何做,以便在第一类底部的方法中使用用户输入的数据,然后使用第二类将结果数据输出给用户?
您需要做很多工作。
让我们一个一个地走,1)您已经创建了HeartRates的对象,但是您没有在其中存储任何值。 仅仅定义二传手不会做你的工作。 初始化的例子。
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方法来设置变量。 您在课堂上定义了一些函数和东西。
4)targetHeartRate50->您将没有获得此方法及其变体的必需输出,因为尚未初始化因变量。
所有这些都是提示。 试试吧。
现在,您没有在打电话给二传手,什么也不做,就是您的物件上的每一个设置。 您只需要这样的行: HeartRate1.setYear(currentYear);
附带说明一下,变量应为小写字母。 因此,HeartRate1应该是heartRate1。 另外,您应该将类级别的变量设为私有,并在打印语句中调用getter。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.