Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java set方法不起作用_Java_Date_Methods - Fatal编程技术网

Java set方法不起作用

Java set方法不起作用,java,date,methods,Java,Date,Methods,我在做我的一个项目,不能真正使用我的方法。我的集合构造函数不起作用。我是新来的,需要帮助。如果你们能帮我,那将是一个很大的帮助。谢谢 我的班级是: 我设置了构造器,听说是这样的: // set constructor public date (int a,int b,int c) //(day,month,year) { if (a <1) { day = 1; a = day; } if (b<1

我在做我的一个项目,不能真正使用我的方法。我的集合构造函数不起作用。我是新来的,需要帮助。如果你们能帮我,那将是一个很大的帮助。谢谢

我的班级是:

我设置了构造器,听说是这样的:

// 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;
    }
}
我的主要课程是:

输出为:

一,

1900年

0


我试着检查所有我甚至试着改变值的东西,但没有任何效果。我得到的唯一结果是1和1900。许多赋值语句都是向后的。等号右边的表达式分配给左边的变量。以下是它们的外观:

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

注意:对于更可读的代码,请使用更好的参数名称。也许您应该根据setter使用d、m或y,而不是重用a。此外,典型的Java命名约定总是将类名的第一个字母大写,因此您应该使用日期而不是日期。

您只需要设置小于1的日期和月份,以及小于1990的年份。你可能应该把它们翻过来。

问题在于你的变量赋值。 您可以使用以下命令压缩代码:


a=天;-这能实现什么?我建议您阅读关于Java类、getter和setter的教程,以及关于条件语句的阅读。您的setter将分别接受小于1和1900的数字。您应该重写它以接受任何数值。您上面的代码表明您需要阅读更多关于Java的教程以提高速度。OMG感谢您,现在它工作得很好。谢谢你是一个活生生的保护程序。虽然正确,三元运算符对于一个新手程序员来说有点过分。
//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());
   }

 }
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;
}
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;
  }
  ...
}