谁能告诉我为什么日期打印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());
}
}
Run Code Online (Sandbox Code Playgroud)
你没有保存你的日,月和年.你应该在构造函数中做到这一点:
public Date(int day, int month, int year) {
this.day = day;
this.month = month;
this.year = year;
}
Run Code Online (Sandbox Code Playgroud)
这就是问题:
public Date(int day, int month, int year) {
}
Run Code Online (Sandbox Code Playgroud)
构造函数完全忽略其参数,使字段保留其默认值.对于int字段,那是0.
相反,它应该保存值,例如
public Date(int day, int month, int year) {
this.day = day;
this.month = month;
this.year = year;
}
Run Code Online (Sandbox Code Playgroud)
或者打电话给你的房产:
public Date(int day, int month, int year) {
setDay(day);
setMonth(month);
setYear(year);
}
Run Code Online (Sandbox Code Playgroud)
我也强烈建议:
DisplayDate到displayDate,或分开写到控制台格式,仅通过重写的关注toString,而不是)