2010-03-06 5 views
1
codes = new Vector<String>(); 
titles = new Vector<String>(); 
urls = new Vector<String>(); 
lecturers = new Vector<String>(); 
while (m.find()) { 
    String courseCode = m.group(1); 
    String courseTitle = m.group(2); 
    String courseURL = url; 
    String lecturerName = m.group(4); 
    codes.add(courseCode); 
    titles.add(courseTitle); 
    urls.add(courseURL); 
    lecturers.add(lecturerName); 
} 

나는 10 개 웹 사이트 등으로부터 데이터를 얻으려고하고 방금 자체 예를 들어, 각 그룹에서 인쇄하면 괜찮아 작동합니다 에서 System.out.println (courseCode); 은 10 개의 courseCodes 목록을 인쇄하지만이 벡터에 추가하려고하면 각 courseCode 대신 마지막 courseCode 만 추가됩니다. 따라서 각 벡터는 10 개의 요소를 가져야하지만 1 개만 가져야합니다. 일치하는 부분을 반복 할 수있는 방법이 있습니까?자바 정규식 정규

+0

더 많은 코드를 보지 않고 말하기가 어렵습니다. 내 생각 엔 당신이'Vector's를 루프 안에서 인스턴스화하고 있다는 것입니다. –

+0

이것은 매우 옳았다, 고맙다. 너무 끔찍한 당신은 답변으로 이것을 게시하지 않았으므로 올바른 것으로 표시 할 수 없습니다. [LOL로도 이것을 수행하면 질문을 게시하고 답변이 정말 분명하게 끝납니다! – Becky

답변

1

어쩌면 정규식이 10 회 대신 한 번만 일치 할 수도 있습니다. while 루프를 반복하는 빈도를 세는 경우 이것을 확인할 수 있습니다. 가장 쉬운 방법은 도움말 변수 int i=0;을 정의하고 루프 내부에서이 값을 i++;으로 늘리고 루프 내부 또는 외부로 인쇄하는 것입니다. 또한 while 루프 안에있는 list.size()으로 벡터의 크기를 확인하여 크기가 실제로 어떻게 커지는 지 확인하십시오.

+0

내가 system.out.println (courseCode);을 입력했기 때문에 두 번 이상 일치한다는 것을 안다. 대신 codes.add (courseCode); 그것은 내가 원하는 것을 인쇄 할 것이지만, 만약 내가 codes.add (courseCode)를 사용하면 어떤 이유로 마지막 매치만을 추가 할 것이고 크기는 항상 1이 될 것이다. – Becky