为什么我无法正确显示这些值?

How come I can't get the values to display properly?

此程序用于获取用户选择的日期和用户选择的出生日期并计算他们的年龄。到目前为止,我已经尽可能地让用户输入值并获取他们的名字。至于在 AgeCalculator class 中返回值,它似乎没有做任何事情,因为当它在 main 中打印时 returns 我的默认值 (2000/01/01)。如何让输入后的值正确显示?

OurDate Class // 声明 AgeCalculator 的所有变量和方法 Class 如下

import java.util.Scanner;

public class OurDate {

private int year;
private int month;
private int day;
private Scanner scan = new Scanner(System.in);

public OurDate() {

    year = 2000;
    month = 1;
    day = 1;

}

public void setYearFromUser() {

    System.out.print("Enter a valid year: ");
    year = scan.nextInt();

}

public void setMonthFromUser() {
    System.out.print("Enter the month: ");
    month = scan.nextInt();

}

public void setDayFromUser() {
    System.out.print("Enter the day: ");
    day = scan.nextInt();
    System.out.println("");

}

public void displayDate() {

    System.out.println(month + "/" + day + "/" + year);

}

public int calcDays() {

    return (year*360*month*30 + day);


}
}

AgeCalculator Class // 为主文件 (Assign2) 创建方法如下

import java.util.Scanner;

public class AgeCalculator {

private OurDate todayDate;
private OurDate birthDate;
private String personName;
private String message;

public AgeCalculator() {

    todayDate = new OurDate();
    birthDate = new OurDate();

}

public void enterData() {

    System.out.println("Enter today's date: ");
    todayDate.setYearFromUser();
    todayDate.setMonthFromUser();
    todayDate.setDayFromUser();

    System.out.println("Enter birth date: ");

    birthDate.setYearFromUser();
    birthDate.setMonthFromUser();
    birthDate.setDayFromUser();

    System.out.println("Enter person's name:");
    Scanner scan = new Scanner (System.in);
    personName = scan.nextLine();

}

public void calculateMessage() {



}

public void displayResults() {

    System.out.print("Today date: ");
    todayDate.displayDate();

    System.out.print("Birth date: ");
    birthDate.displayDate();

    System.out.print(personName);

}
}

Assing2 Class // 主文件

public class Assign2{

public static void main(String[] args) {

    AgeCalculator inputFromUser = new AgeCalculator();
            inputFromUser.enterData();

    AgeCalculator displayMessage = new AgeCalculator();
            displayMessage.displayResults();

}


}

主要功能创建了 2 个不同的对象。 在 Java 和 OOP 编程语言中,每个对象都有自己的一组数据。

因此 inputFromUser 对象已从您调用 enterData() 的用户那里获得了正确的输入。

displayMessage 没有。

您必须使用相同的对象

AgeCalculator calc = new AgeCalculator();
calc.enterData();
calc.displayResults();

inputFromUserdisplayMessage 是两个独立的对象,它们各自有自己的数据。如果要显示inputFromUser持有的数据,需要调用inputFromUser.displayResults().

在 main 方法中调用 displaydate 方法。