我试图弄清楚如何编写一个调用方法的构造函数。我已经获得了Java项目的以下说明。大胆的那些与这一步骤有关。第3步我已经完成,但我无法确认是否正确完成了。步骤3的代码是Date类中的第二个Date构造函数。
从DateTest取消注释第1行(不要忘记删除“第1行”部分)并构建并运行项目。什么是输出?为什么这是输出?
为Date创建默认构造函数,将日期设置为1/1/2000。构建并运行项目。什么是输出?
创建一个构造函数,该构造函数具有三个月,日和年的int参数,并将这些实例变量的值设置为传入的值。取消注释第2行和第3行。构建并运行项目。输出是什么?
重写问题3中的构造函数,使其调用setMonth(),setDay()和setYear()。构建并运行项目。输出是什么?
编写一个set()方法,该方法包含月,日和年的三个参数。取消注释第4行和第5行。构建并运行项目。输出是什么?
重写问题3中的构造函数,使其调用set()。构建并运行项目。什么是输出?
下面是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);
}
答案 0 :(得分:2)
以下代码是否是编写构造函数来调用方法的正确方法?
public Date (int m, int d, int y) {
this.setMonth(month);
this.setDay(day);
this.setYear(year);
}
是的,如果您使用的是m
,d
和y
个参数,而不是month
,day
和year
:< / p>
public Date (int m, int d, int y) {
this.setMonth(m);
this.setDay(d);
this.setYear(y);
}
使用您的代码,您实际上只是将实例成员(month
等)设置为其现有值(因为构造函数中的month
会自动解析为实例数据成员{{ 1}}使用隐含的month
)。所以我猜你在尝试它时,你最终得到了零,并且不明白为什么。 (this.
成员在构造函数中的代码运行之前自动初始化为零。)