我正在做我的一个项目,并且无法真正完成我的set方法。而我的set构造函数不起作用。我是全新的,需要帮助。如果你们帮助我,谢谢你,这将是一个很大的帮助。
我的班级是:
public class date {
private int day;
private int month;
private int year;
public date ()
{
day = 1;
month = 1;
year = 1900;
}
我设置构造函数听听它是怎么回事:
// set constructor
public date (int a,int b,int c) //(day,month,year)
{
if (a <1)
{
day = 1;
a = day;
}
if (b<1)
{
month = 1;
b = month;
}
if (c<1900)
{
year = 1900;
c = year;
}
else
{
a = day;
b = month;
c = year;
}
}
这是我开始将veribals设置为mutators的地方
// set date
public void setDay (int a)
{
if (a <1)
{
day = 1;
a = day;
}
else
a = day;
}
// set month
public void setMonth (int a)
{
if (a <1)
{
month = 1;
a = month;
}
else
a = month;
}
// set year
public void setYear (int a)
{
if (a <1990)
{
year = 1990;
a = year;
}
else
a = year;
}
这就是我开始编写配件的地方
//Accsessors
public int getDay ()
{
return day;
}
public int getMonth ()
{
return month;
}
public int getYear ()
{
return year;
}
}
我的主要课程是:
public class checkDate {
public static void main (String [] args)
{
date year1 = new date();
date year2 = new date (21,3,1995);
year1.setDay(13);
year1.setMonth(12);
year1.setYear(2010);
System.out.println(year1.getDay());
System.out.println(year1.getYear());
System.out.println(year2.getYear());
}
}
输出是:
1
1900
0
我尝试检查所有我甚至试图改变价值的东西,但没有任何效果我得到的只是1和1900
答案 0 :(得分:2)
许多作业陈述都是倒退的。 equals右侧的表达式分配给左侧的变量。以下是他们应该看起来的样子:
public date(int a, int b, int c) {
if (a < 1)
a = 1;
if (b < 1)
b = 1;
if (c < 1900)
c = 1900;
day = a;
month = b;
year = c;
}
安装者也有类似的问题。不要分配参数,分配给实例变量。
public void setDay(int a) {
if (a < 1)
a = 1;
day = a;
}
public void setMonth(int a) {
if (a < 1)
a = 1;
month = a;
}
public void setYear(int a) {
if (a < 1990)
a = 1990;
year = a;
}
注意:要获得更易读的代码,请使用更好的参数名称。您可以使用a
,d
或m
,而不是重复使用y
,具体取决于设置者。此外,典型的Java命名约定总是将类名的第一个字母大写,因此您应该使用Date
而不是date
。
答案 1 :(得分:0)
您只设置小于1的日期和月份,以及小于1990的年份。您应该翻转那些“&lt;”进入“&gt;”。
答案 2 :(得分:0)
问题在于你的变量赋值。 您可以使用ternary operator:
压缩您的代码public class Date{
private int day;
private int month;
private int year;
public Date(int d, int m, int y){
day = d<1 ? 1 : d;
month = m<1||m>12 ? 1 : m;
year = y<1900 ? 1990 : y;
}
public int getDay(){
return day;
}
...
public void setDay(int d){
day = d<1 ? 1 : d;
}
...
}