繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM