初学者Java:如何编写构造函数来调用方法?

时间:2014-10-29 18:54:04

标签: java methods constructor call

我试图弄清楚如何编写一个调用方法的构造函数。我已经获得了Java项目的以下说明。大胆的那些与这一步骤有关。第3步我已经完成,但我无法确认是否正确完成了。步骤3的代码是Date类中的第二个Date构造函数。

  1. 从DateTest取消注释第1行(不要忘记删除“第1行”部分)并构建并运行项目。什么是输出?为什么这是输出?

  2. 为Date创建默认构造函数,将日期设置为1/1/2000。构建并运行项目。什么是输出?

  3. 创建一个构造函数,该构造函数具有三个月,日和年的int参数,并将这些实例变量的值设置为传入的值。取消注释第2行和第3行。构建并运行项目。输出是什么?

  4. 重写问题3中的构造函数,使其调用setMonth(),setDay()和setYear()。构建并运行项目。输出是什么?

  5. 编写一个set()方法,该方法包含月,日和年的三个参数。取消注释第4行和第5行。构建并运行项目。输出是什么?

  6. 重写问题3中的构造函数,使其调用set()。构建并运行项目。什么是输出?

  7. 下面是Date类和DateTest类的代码。

    package datetest;
    
    import java.util.Scanner;
    
    public class Date
    {
    public Date() {
        month = 1;
        day = 1;
        year = 2000;
    }
    public Date(int m, int d, int y) {
        month = m;
        day = d;
        year = y;
    }
    private int month;
    private int day;
    private int year; //a four digit number.
    
    
    public void setYear(int newYear)
    {
       year = newYear;
    }
    public void setMonth(int newMonth)
    {
        if ((newMonth <= 0) || (newMonth > 12))
        {
            month=newMonth;
        }
        else
            month = newMonth;
    }
    
    public void setDay(int newDay)
    {
        if ((newDay <= 0) || (newDay > 31))
        {
            day=1;
        }
        else
            day = newDay;
    }
    
    public int getMonth( )
    {
        return month;
    }
    
    
    public int getDay( )
    {
        return day;
    }
    
    public int getYear( )
    {
        return year;
    }
    
    public void printDate( )
    {
        System.out.print(getMonth() + "/" + getDay() + "/" + getYear());
    }
    
    
    public void readInput( )
    {
        boolean tryAgain = true;
        Scanner keyboard = new Scanner(System.in);
        System.out.println("Enter month, day, and year.");
        System.out.println("Do not use a comma.");
        month = keyboard.nextInt( );
        day = keyboard.nextInt( );
        year = keyboard.nextInt( );
    }
    
    }
    

    这是DateTest类。

    package datetest;
    
    
    public class DateTest {
    
    public static void main(String[] args) {
    Date today = new Date();
    
            System.out.println("Today’s date is " + today.getMonth() + "/" + today.getDay() + "/" + today.getYear());
            //Line 2. today = new Date(55, 55, 2011);
            //Line 3. System.out.println("Today’s date is " + today.getMonth() + "/" + today.getDay() + "/" + today.getYear());
            //Line 4. today.set(10, 5, 2011);
            //Line 5. System.out.println("Today’s date is " + today.getMonth() + "/" + today.getDay() + "/" + today.getYear());
    
     }
    }
    

    我试图编写代码来调用步骤4中的方法。下面的代码是否是编写构造函数来调用方法的正确方法?

       public Date (int m, int d, int y) {
       this.setMonth(month);
       this.setDay(day);
       this.setYear(year);
    }
    

1 个答案:

答案 0 :(得分:2)

  

以下代码是否是编写构造函数来调用方法的正确方法?

public Date (int m, int d, int y) {
   this.setMonth(month);
   this.setDay(day);
   this.setYear(year);
}

是的,如果您使用的是mdy个参数,而不是monthdayyear:< / p>

public Date (int m, int d, int y) {
   this.setMonth(m);
   this.setDay(d);
   this.setYear(y);
}

使用您的代码,您实际上只是将实例成员(month等)设置为其现有值(因为构造函数中的month会自动解析为实例数据成员{{ 1}}使用隐含的month)。所以我猜你在尝试它时,你最终得到了零,并且不明白为什么。 (this.成员在构造函数中的代码运行之前自动初始化为零。)