【问题标题】:How come I can't get the values to display properly?为什么我无法正确显示值?
【发布时间】:2016-10-27 23:00:40
【问题描述】:

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

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 类 // 为主文件(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 类 // 主文件

public class Assign2{

public static void main(String[] args) {

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

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

}


}

【问题讨论】:

    标签: java class methods call declaration


    【解决方案1】:

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

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

    而displayMessage 没有。

    您必须使用相同的对象

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

    【讨论】:

    • 谢谢!工作完美,我理解它背后的原因。 :)
    【解决方案2】:

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

    【讨论】:

    • 谢谢!我采用了@Shady Atef 的代码,但你的代码同样有意义。非常感谢。 :)
    【解决方案3】:

    在你的 main 方法中调用你的 displaydate 方法。

    【讨论】:

      猜你喜欢
      • 2021-10-03
      • 2020-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-13
      • 1970-01-01
      • 1970-01-01
      • 2020-04-06
      相关资源
      最近更新 更多