2014-04-22 1 views
-1

저는 현재 두 번째 학기에 Java를 배우고 있으며,이 프로젝트를 위해 ArrayLists, 향상된 for-each 루프 및 선형 검색을 함께 사용해야합니다. 프로젝트의 경우 작업 관리자를 만들고이 메서드를 사용하여 ArrayList에서 날짜를 검색 한 다음 올바른 날짜로 전체 작업을 반환 할 수 있기를 원합니다. "유형 불일치 : Task에서 ArrayList로 변환 할 수 없습니다"라는 강조 표시된 줄에서이 오류가 나타납니다.이 메서드는 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++; 
     } 
} 
+1

메소드가 'ArrayList '을 반환 할 것이라고 정의하는 동안 하나의'Task'를 반환하려고합니다. 메소드 내부의 중간 목록에이를 저장 한 다음 끝에 그 목록을 리턴하려고합니다. –

+0

@ JeroenVannevel 어떻게해야합니까? – JamesDavisSmith

답변

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++; 
     } 
} 
+0

잘 표현하지는 못했지만 반환 유형을 작업으로 변경할 수 없습니다. 할당 지침으로 인해 ArrayList 여야합니다. 사용자가 입력 한 것과 일치하는 날짜를 가진 작업을 반환 할 수 있어야합니다. – JamesDavisSmith

+0

@Gerg이 나를 위해 일해 주셔서 감사합니다! – JamesDavisSmith

0

귀하의 메서드 선언 :

public ArrayList<Task> findTasksByDate(Date date) { 

당신은 Task를 반환하고, 아닌 ArrayListTask의의.

변경이로 :

public Task findTasksByDate(Date date) { 
+0

위와 같이 할당 지침 때문에이 메서드는 Task가 아닌 ArrayList로 반환해야합니다. – JamesDavisSmith

-1

귀하의 방법은 ArrayList를 반환되지만 당신은 작업을 반환합니다. 그래서 배열 요소. 작업을 반환해야

귀하의 방법은 새로운 ArrayList를 생성하고이 새로운 목록에 반환 항목을 추가 ArrayList를

또는

의 insted.

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++; 
     } 
} 
+0

위와 같이 할당 지침 때문에이 메서드는 Task가 아닌 ArrayList로 반환해야합니다. – JamesDavisSmith

+0

새 배열 목록을 인스턴스화합니다. 이 빈 목록에 작업을 추가하십시오. 목록을 반환하십시오. – Marcinek

+0

고마워요! – JamesDavisSmith

관련 문제