简体   繁体   English

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

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

this program is made to take the user's chosen date and the user's chosen birth date and calculate how old they are. 该程序用于获取用户选择的日期和用户选择的出生日期,并计算他们的年龄。 So far I've gotten as far as getting the user to input the values and get their name. 到目前为止,我已经达到让用户输入值并获取其名称的目的。 As for returning the values in the AgeCalculator class, it doesnt seem to be doing anything since when printed in main it returns my default values (2000/01/01). 至于返回AgeCalculator类中的值,它似乎没有任何作用,因为在main中打印时,它将返回我的默认值(2000/01/01)。 How can I get the values to display properly after input? 输入后如何使值正确显示?

OurDate Class // Declares all variables and methods for the AgeCalculator Class below OurDate类//声明下面的AgeCalculator类的所有变量和方法

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 // Creates methods for the main file (Assign2) below AgeCalculator类//创建为低于主文件(的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 // Main file Assing2类//主文件

public class Assign2{

public static void main(String[] args) {

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

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

}


}

The main functions creates 2 different objects. 主要功能创建2个不同的对象。 In Java and OOP programming languages, Each object has its own set of the data. 在Java和OOP编程语言中,每个对象都有其自己的数据集。

So inputFromUser object has acquired the right input from the user as you called enterData() on it. 因此, inputFromUser对象上调用enterData()时, inputFromUser对象已从用户那里获取了正确的输入。

and displayMessage doesn't. displayMessage没有。

You must use the same object 您必须使用相同的对象

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

inputFromUser and displayMessage are two separate objects, and they each have their own data. inputFromUserdisplayMessage是两个单独的对象,它们各自具有自己的数据。 If you want to display the data held by inputFromUser , you need to call inputFromUser.displayResults() . 如果要显示inputFromUser的数据,则需要调用inputFromUser.displayResults()

在主方法中调用displaydate方法。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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