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

时间:2015-02-03 03:42:50

标签: java class methods user-input getter-setter

大家好我从一个类中获取用户输入以在另一个类的方法中使用时遇到了一些问题(当我尝试使用输入的数据时,没有显示任何内容,或者如果某些内容完成了数字为零)。下面是两个类,第一个包含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);
}
}

我已经在这里工作了几个小时,并且取得了很小的进展。同样问题是如何创建它以便在第一个类的底部的方法中使用用户输入数据,然后使用第二个类将结果数据输出给用户?

2 个答案:

答案 0 :(得分:1)

你需要做很多工作。

让我们一个接一个, 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 - >您没有获得此方法及其变体的必需输出,因为您尚未初始化因变量。

所有这些都是提示。试试吧。

答案 1 :(得分:-1)

现在你没有打电话给你的安装人员,你的对象上没有任何设置。您只需要这样的行:HeartRate1.setYear(currentYear); 作为旁注变量应该是较低的驼峰情况。所以HeartRate1应该是heartRate1。此外,您应该将您的类级别变量设为私有,而是在print语句中调用getter。