set方法不起作用

时间:2016-05-22 19:42:39

标签: java date methods

我正在做我的一个项目,并且无法真正完成我的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

3 个答案:

答案 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;
}

注意:要获得更易读的代码,请使用更好的参数名称。您可以使用adm,而不是重复使用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;
  }
  ...
}