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

时间:2016-10-27 23:00:40

标签: java class methods call declaration

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

OurDate类//声明下面的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();

}


}

3 个答案:

答案 0 :(得分:0)

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

所以当inputFromUser对象在其上调用enterData()时,它已从用户那里获得了正确的输入。

displayMessage没有。

您必须使用相同的对象

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

答案 1 :(得分:0)

inputFromUserdisplayMessage是两个独立的对象,每个对象都有自己的数据。如果您想显示inputFromUser所持有的数据,则需要拨打inputFromUser.displayResults()

答案 2 :(得分:0)

在main方法中调用displaydate方法。