我目前正在学习Java的第二学期,对于这个项目,我们应该使用ArrayLists,为每个循环和线性搜索一起增强。对于项目,我创建了一个任务管理器,并且使用这种方法,我希望能够在ArrayList中搜索日期,然后使用正确的日期返回整个任务。我从下面突出显示的行中得到此错误"类型不匹配:无法从Task转换为ArrayList"由于赋值指南,此方法必须将其作为ArrayList返回,我做错了什么?我该如何解决?
public ArrayList<Task> findTasksByDate(Date date) {
while(i<taskMan.size()); {
for (Task element: taskMan) {
if (date.equals(taskMan.get(i).getDueDate())) {
return taskMan.get(i);//error with this line
}
return null;
}
i++;
}
}
答案 0 :(得分:1)
要返回ArrayList,您需要声明一个本地ArrayList,将该元素添加到列表中,然后返回该列表。像这样:
public ArrayList<Task> findTasksByDate(Date date) {
ArrayList<Task> returnList = new ArrayList<Task>();
while(i<taskMan.size()); {
for (Task element: taskMan) {
if (date.equals(taskMan.get(i).getDueDate())) {
returnList.add(taskMan.get(i));
return returnList;
}
return null;
}
i++;
}
}
答案 1 :(得分:0)
您的方法声明:
public ArrayList<Task> findTasksByDate(Date date) {
您将返回Task
,而不是ArrayList
Task
。
将其更改为:
public Task findTasksByDate(Date date) {
答案 2 :(得分:-1)
您的方法返回ArrayList,但您想返回一个Task。所以数组元素。
你的方法应该返回ArrayList
的任务或
创建一个新的ArrayList并将返回项添加到此新列表中。
public ArrayList<Task> findTasksByDate(Date date) {
while(i<taskMan.size()); {
for (Task element: taskMan) {
if (date.equals(taskMan.get(i).getDueDate())) {
ArrayList<Task> returnList = new ArrayList<>(); // create new list.
returnList.add(taskMan.get(i));//add
return returnList; // return the new collection
}
return null;
}
i++;
}
}