2013-06-22 2 views
0

길이가 3보다 큰 목록의 모든 문자열의 하위 목록을 반환하는 메서드 필터를 구현했습니다. 추가 한 후 주 함수에서 filter()를 호출했습니다. 세 가지 샘플 데이터 - 안녕 샘 워싱턴. 출력은 Hel Sam Was이어야합니다. 제안?자바에서 ArrayList의 세 글자를 표시하는 필터 문자열

import java.util.ArrayList; 

public class practice { 
    private ArrayList<String> list = new ArrayList<String>(); 

    public ArrayList<String> filter() { 
     for(int i=0; i<list.size(); i++) { 
      if(list.get(i).length() > 3) 
       list.set(i, list.get(i).substring(0, 3)); 
     } 
     return list; 
    } 

    public static void main(String[] args) { 
     ArrayList<String> list1 = new ArrayList<String>(); 

     list1.add("Hello"); 
     list1.add("Sam"); 
     list1.add("Washington"); 

     filter(); 

     for(int i=0; i<list1.size(); i++) 
      System.out.println(list1.get(i)); 
    } 
} 

답변

0

실습 중 클래스를 인스턴스화하지 않습니다. 그렇게하고 list 목록을 채운 다음 필터를 호출해야합니다. 여기에 당신을 위해 주요 방법을 붙이고 있습니다.

Practice practice = new Practice(); 
practice.list.add("Hello"); 
practice.list.add("Sam"); 
practice.list.add("Washington"); 

practice.filter(); 

for(int i=0; i<practice.list.size(); i++) 
    System.out.println(practice.list.get(i)); 
1

당신은 반환 값을 사용하지 않고 filter에서 list을 반환하거나 실제로 list1를 전달하고 있습니다. 대신 list에 항목을 추가하거나 다시 당신의 방법과 같이 할 수 있습니다 :

public ArrayList<String> filter(ArrayList<String> toFilter) { 
    for(int i=0; i<toFilter.size(); i++) { 
     if(toFilter.get(i).length() > 3) 
      toFilter.set(i, toFilter.get(i).substring(0, 3)); 
    } 
    return toFilter; 
} 

을 다음 filter();list1 = filter();에 줄을 변경, 그래서 당신은 필터링의 결과를 캡처합니다.

관련 문제