我有类Date和类DateTest。我试图让用户输入日期,我必须使用get / set方法和构造函数正确格式化它。但是当我尝试在输入后检索日期时,我只会得到零。
我的代码:
public class Date
{
private int month;
private int day;
private int year;
public Date(int m, int d, int y){
month = m;
day = d;
year = y;
}
public void setMonth(int Month) {
this.month = month;
}
public int getMonth(){
return month;
}
public void setDay(int Day) {
this.day = day;
}
public int getDay(){
return day;
}
public void setYear(int Year) {
this.year = year;
}
public int getYear(){
return year;
}
public String displayDate(){
return String.format("%d / %d / %d", month, day, year);
}
}
和DateTest类:
import java.util.Scanner;
public class DateTest
{
public static void main( String[] args)
{
Scanner input = new Scanner(System.in);
Date myDate = new Date(0, 0, 0);
System.out.println("Please enter the month:");
int month = input.nextInt();
myDate.setMonth(month);
System.out.println();
System.out.println("Please enter the day:");
int day = input.nextInt();
myDate.setDay(day);
System.out.println();
System.out.println("Please enter the year:");
int year = input.nextInt();
myDate.setYear(year);
System.out.println();
System.out.printf("The date is %s%n", myDate.displayDate());
}
}
这是我的输出:
请输入月份: 3
请输入当天: 10
请输入年份: 2016
日期为0/0/0
它只显示为零。我确信这是一个简单的解决方案,但我无法理解。
答案 0 :(得分:4)
public void setYear(int Year) {
this.year = year;
}
Java区分大小写。 Year
与year
不同。
您在这里所做的只是分配this.year = this.year
。
将参数签名的名称更改为int year
(这也符合通常以小写字母开头的命名约定。)
所有三位二人都有同样的问题。
答案 1 :(得分:0)
this.month = month;
替换为this.month = Month;
this.day = day;
替换为this.day= Day;
this.year= year;
替换为this.year= Year;
希望你遇到问题,你需要将成员变量分配给在参数中传递的成员变量,而不是分配给自身的成员变量。
public void setDay(int Day) {
this.day = day;
}
答案 2 :(得分:0)