我被要求根据某些特定指令编写程序(类)。我觉得我几乎把它记下来了,但我正在做一些愚蠢的事情。我无法弄清楚如何将连字符添加到符号常量中,以便当我键入 INSERT_HYPHEN 时,它会在访问器方法中插入一个“-”。它说不兼容的类型>:( 另外,当我尝试将局部变量“fullDate”插入到“getFullDate”访问器方法中,然后输入“fullDate = year + month + day”时,它表示“不兼容的类型!也许是因为访问方法是一个字符串,我正在尝试在其中添加“整数”。我找不到解决方法。这是我的代码。
public class Date
{
public static final int INSERT_ZERO = 0;
public static final char INSET_HYPHEN = -; //ERROR incompatible types
// instance variables - replace the example below with your own
private int year;
private int month;
private int day;
/**
* Default constructor
*/
public Date()
{
setYear (2013);
setMonth (01);
setDay (01);
}
/**
*
*/
public Date (int whatIsYear, int whatIsMonth, int whatIsDay)
{
setYear (whatIsYear);
setMonth (whatIsMonth);
setDay (whatIsDay);
}
/**
*@return year
*/
public int getYear()
{
return year;
}
/**
*@return month
*/
public int getMonth()
{
return month;
}
/**
*@return day
*/
public int getDay()
{
return day;
}
/**
*@return
*/
public String getFullDate()
{
String fullDate;
if (whatIsMonth < 10); // the year, month, and day all give me incompatible types :(
{
fullDate = year + INSERT_HYPHEN + INSERT_ZERO + month + INSERT_HYPHEN + day;
}
if (whatIsDay < 10);
{
fullDate = year + INSERT_HYPHEN + month + INSERT_HYPHEN + INSERT_ZERO + day;
}
else
{
fullDate = year + INSERT_HYPHEN + month + INSERT_HYPHEN + day;
}
return year + month + day;
}
/**
*
*/
public void setYear (int whatIsYear)
{
if ((whatIsYear >= 1990) && (whatIsYear <= 2013))
{
year = whatIsYear;
}
else
{
year = 2013;
}
}
/**
*
*/
public void setMonth (int whatIsMonth)
{
if ((whatIsMonth >= 1) && (whatIsMonth <= 12))
{
month = whatIsMonth;
}
else
{
month = 01;
}
}
/**
*
*/
public void setDay (int whatIsDay)
{
if ((whatIsDay >= 1) && (whatIsDay <= 31))
{
day = whatIsDay;
}
else
{
day = 01;
}
}
}
只是为了更多的背景。我正在构建的这个类有三个字段,分别保存年、月和日。年份可以介于 1900 年和当前年份之间(含)。月份可以介于 1 和 12 之间。天数可以介于 1 到 31 之间。我必须在代码中使用符号常量而不是“魔术”数字,例如 public static final int FIRST_MONTH = 1;
默认构造函数将 year 设置为当前年份,将 month 设置为第一个月,将 day 设置为第一天。非默认构造函数测试每个参数。如果年份参数超出可接受范围,则将字段设置为当前年份。如果月份参数超出可接受的范围,它会将字段设置为第一个月。如果 day 参数超出可接受的范围,则将字段设置为第一天。
每个字段都有一个访问器方法和一个修改器方法。所有三个 mutator 方法都检查其参数的有效性,如果无效,则以与非默认构造函数相同的方式设置相应的字段。
这是我遇到麻烦的部分。我必须包含一个名为“public String getFullDate()”的方法,它返回一个带有以下格式的日期的字符串:YYYY-MM-DD,例如 2012-01-01。单个数字的月份和日期用前导零填充。 "
任何帮助都将不胜感激,即使只是一个想法:) 谢谢。