有人能告诉我为什么日期打印0/0/0
吗?
缺少哪部分代码,以便使用Scanner输入的值传递到方法DisplayDate
并打印在屏幕上?
import java.util.Scanner;
public class DateClass {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Enter day:");
int day = scanner.nextInt();
System.out.println("Enter month:");
int month = scanner.nextInt();
System.out.println("Enter year:");
int year = scanner.nextInt();
Date d = new Date(day,month,year);
d.DisplayDate();
}
}
class Date {
private int day;
private int month;
private int year;
public Date(int day, int month, int year) {
}
public int getDay() {
return day;
}
public void setDay(int day) {
this.day = day;
}
public int getMonth() {
return month;
}
public void setMonth(int month) {
this.month = month;
}
public int getYear() {
return year;
}
public void setYear(int year) {
this.year = year;
}
public void DisplayDate() {
System.out.println(getDay() + "/" + getMonth() + "/" + getYear());
}
}
答案 0 :(得分:6)
您没有保存您的日,月和年。你应该在构造函数中做到这一点:
public Date(int day, int month, int year) {
this.day = day;
this.month = month;
this.year = year;
}
答案 1 :(得分:6)
这是问题所在:
public Date(int day, int month, int year) {
}
您的构造函数完全忽略其参数,使您的字段保留其默认值。对于int
字段,即0。
相反,它应该保存值,例如
public Date(int day, int month, int year) {
this.day = day;
this.month = month;
this.year = year;
}
或者可能打电话给你的房产:
public Date(int day, int month, int year) {
setDay(day);
setMonth(month);
setYear(year);
}
我强烈建议:
DisplayDate
更改为displayDate
,或者将格式与写入控制权分开,只需覆盖toString
答案 2 :(得分:2)
你的构造函数什么都不做:
public Date(int day, int month, int year) {
}
它接受适当的值,但不对它们做任何事情。请注意DisplayDate
如何调用您的getter方法:getDay()
,getMonth()
和getYear()
?这些getter返回的值是类顶部定义的实例变量:day
,month
和year
。由于这些值从未使用适当的值进行初始化,因此默认为0。
一个更明智的构造函数是:
public Date(int day, int month, int year) {
this.day = day;
this.month = month;
this.year = year;
}
答案 3 :(得分:1)
将您的构造函数编辑为:
public Date(int day, int month, int year) {
this.day=day;
this.month=month;
this.year=year;
}
问题是你以后从未设置过你要求的变量!
答案 4 :(得分:0)
因为Date类的构造函数为空!
将其更改为以下内容,它将起作用:
public Date(int day, int month, int year) {
this.day = day;
this.month = month;
this.year = year;
}
答案 5 :(得分:0)
Date类的构造函数为空,因此在创建新Date对象时不会设置值。