import java.util.*
public class InheritancePart1
{
ArrayList<Date> dates = new ArrayList<Date>();
dates.set(0, (1, 12, 1998));
//Syntax error on token ",", Name expected after this token
}
对于这个程序,我有一个由(int m,int d,int y)定义的Date对象 例子(1,1,2000),以及一个名为LongDate的Date的子类,由 (String monthName,int d,int y)例如(“January”,1,2000)。为简单起见,我省略了这两个类,只显示了主要方法。
我的问题是我需要创建一个Date类型的数组,然后填充它 包含多个Date和LongDate对象的数组,然后在这些对象上调用方法 对象。但是当我尝试将Date类的对象分配给索引时 在ArrayList中,我收到如上所示的错误信息。
为什么会发生这种情况/我做错了什么?我试着做了
dates.set(0, Date(1, 12, 1998));
但是我收到了同样的错误消息。另外,我尝试使用Scanner初始化它,但是 这不起作用,给我同样的错误信息。
如果有人能帮我解决所有这些问题,我会非常感激。
答案 0 :(得分:0)
您需要将构造函数调用为
new Date(year, month date)
另请注意,您要使用List.add
而不是List.set
,因为您要添加,而不是替换元素:
dates.add(new Date(year, month, date));
请注意,参数year
和month
可能与您的预期不符(这是一个荒谬的不良API) - year
是年数自1900年以来; month
从零开始,因此1月为零。因此,您需要使用:
dates.add(new Date(1998 - 1900, 12 - 1, 1));
创建代表1998年12月1日的日期。
答案 1 :(得分:0)
您正在使用日期列表,因此您需要使用方法add(...)
并将参数传递给日期类的实例。
所以你的代码没有用,因为你试图把一些奇怪的东西放到一个甚至不是Date类实例的东西......你正在破坏列表所包含的内容和你插入它的内容之间的契约...
解决方案是添加有效的日期对象...
List<Date> myDateList = new ArrayList<Date>();
myDateList.add(new Date());
final Calendar c1 = GregorianCalendar.getInstance();
c1.set(2014, 3, 30); // March 30th 2014
// Date sDate = c1.getTime();
myDateList.add(c1.getTime());
// print it
for (final Date d : myDateList) {
System.out.println(d);
}