[질문] 두배열을 비교한 뒤 처음 배열 변경을 어떻게 하나요? [자바]
뿡뿡
아래와 같은두개의 배열이 있습니다.
cur1배열에서 cur2 와 같은 값([여기까지 일치하는) 가지고 있는 것을 검색하여 cur1배열의 일치하는 값의 갯수
에 cur2배열의 갯수를 뺄셈을 하여변경하려고 합니다.
즉 결과물을
--------------------------------------------------------------------------------------------
의자핑크:ㅋㅋ 1 [10개],ㅋㅋ 2 [15개]|의자녹색:ㅋㅋ 3 [11개],ㅋㅋ 1 [2개]|의자녹색2:ㅋㅋ 2 [10개],ㅋㅋ 3 [12개],ㅋㅋ 4 [12개]
--------------------------------------------------------------------------------------------
을 나타내려고 하는데
ty를 찍어보면
--------------------------------------------------------------------------------------------
의자핑크:ㅋㅋ 1 [10개],ㅋㅋ 2 [15개]|의자녹색:ㅋㅋ 3 [11개],ㅋㅋ 1 [2개]|의자녹색2:ㅋㅋ 2 [12개],ㅋㅋ 3 [12개],ㅋㅋ 4 [12개]
--------------------------------------------------------------------------------------------
으로 나타납니다.
즉 의자핑크만 먹히고 그 뒤에의 배열 값들은 변경이 안됩니다. cur2 을
{의자핑크:ㅋㅋ 1 [5개], 의자녹색:ㅋㅋ 1 [5개], 의자녹색2:ㅋㅋ 2 [2개]};으로 해도 맨 처음 의자핑크만 먹히는군요.다 변경이 먹히는 방법 좀 가르쳐 주세요. for문이 잘못 된거 같기도 하고.... 이궁....
참고로 Uil.split는 다른 클래스에서의 함수로서 구분자 |를 나누어 스트링배열로 리턴하는 함수입니다.소스 코드
-----------------------------------------------------------------------------------------
String cur = 의자핑크:ㅋㅋ 1 [15개],ㅋㅋ 2 [15개]|의자녹색:ㅋㅋ 3 [11개],ㅋㅋ 1 [2개]|의자녹색2:ㅋㅋ 2 [12개],ㅋㅋ 3 [12개],ㅋㅋ 4 [12개] String[] ty = null;
int uo = 0;
String[] cur1 = Util.split(cur,|); //유틸 클래스로 구분자|로 구분하여 새로운 배열 생성
String[] cur2 = {의자핑크:ㅋㅋ 1 [5개], 의자핑크:ㅋㅋ 1 [5개], 의자녹색2:ㅋㅋ 2 [2개]};
for(int i=0 ;icur1.length ; i++) {
ty = Util.split(cur,,); //유틸 클래스로 구분자|로 구분하여 새로운 배열 생성
for(int o=0 ;oty.length ; o++) {
for(int j=0 ; jcur2.length; j++) {
if(ty[o].substring(0, ty[o].indexOf([)).equals(cur2[j].substring(0, cur2[j].indexOf([)))) {//두 배열 비교
uo = Integer.parseInt(ty[o].substring(ty[o].indexOf([)+1, ty[o].lastIndexOf(개)))-Integer.parseInt(cur2[j].substring(cur2[j].indexOf([)+1, cur2[j].lastIndexOf(개)));
ty[o] = ty[o].substring(0, ty[o].indexOf([)+1)+(uo)+ty[o].substring(ty[o].indexOf(개), ty[o].length);
}
}
}
}
-
야미 2023-10-28
꼭 배열을 써야된다는게 아니라면 다른 형태로 하는건 어떨까요? 파싱해서 map 형태로 변환시키고, 키값으로 \의자핑크ㅋㅋ1\ 값으로 \15\개를 넣은다면..수정이 용이할 거 같은데요?
-
두힘 2023-10-28
예 수정하겠습니다. 죄송합니다.
-
방방 2023-10-28
질문에는 말머리를.. 공지사항읽어 보세요.