使用用户创建的对象/来自控制台

时间:2016-03-30 15:30:37

标签: java arrays inheritance arraylist input

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初始化它,但是     这不起作用,给我同样的错误信息。

如果有人能帮我解决所有这些问题,我会非常感激。

2 个答案:

答案 0 :(得分:0)

您需要将构造函数调用为

new Date(year, month date)

另请注意,您要使用List.add而不是List.set,因为您要添加,而不是替换元素:

dates.add(new Date(year, month, date));

请注意,参数yearmonth可能与您的预期不符(这是一个荒谬的不良API) - year是年数自1900年以来; month从零开始,因此1月为零。因此,您需要使用:

dates.add(new Date(1998 - 1900, 12 - 1, 1));

创建代表1998年12月1日的日期。

答案 1 :(得分:0)

您正在使用日期列表,因此您需要使用方法add(...)并将参数传递给日期类的实例。

所以你的代码没有用,因为你试图把一些奇怪的东西放到一个甚至不是Date类实例的东西......你正在破坏列表所包含的内容和你插入它的内容之间的契约...

解决方案是添加有效的日期对象...

使用Calendar类的示例:

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