자꾸 삐꾸가 나네요...
매개변수로 주어진 값은 1입니다...매개변수인 1이 아닌값으로 0~6의 숫자를 가진 (a.size() 가 7) 3개의 정수를 발생시켜서 resultList에 중복이 없이 리턴하는것이 목표입니다...한번 보고 지적해주시면 감사하겠습니다.
다른 더 간단한 방법있으시면 알려주시면 또 감사하겠씁니다.
2번째 컴파일해서 나온거보면...
3개 잘만들고 중복없는지까지 체크했는데...갑자기 한숫자가 추가되었네요 ㅜㅠ 루프가 한번더돈거같은데..
3번째 컴파일해서 나온거보면
3개 만들고 if로 해서 중복 체크하는 쪽으로 넘어가지 않고 거기서 진행이 안되네요..
코드는 다음과 같아요.
public ArrayList
ArrayList
int count=0;
int index;
//3개를 뽑는데, answerIndex를 제외한 경우에 3개를 중복되지 않게 뽑음.(answerIndex는 1로 주어짐)
do{
count++;
index=(int)(Math.random()*a.size());
resultList.add(index);
System.out.println(resultList);
System.out.println(resultList.size());
if(resultList.contains(answerIndex)){
System.out.println("카운트는 "+count);
resultList.remove(count-1);//만약에 resultList에서 추가된 값이 1과 같으면 그 값을 삭제하고 count도 줄임.
count--;
break;
}
if(resultList.size()==3){ //1의 값이 제외된 3자리 수가 나오면 3자리끼리 중복되지 않도록 함.
do{
if(resultList.get(0)==(1))
resultList.add(1, index);
if(resultList.get(1)==(2))
resultList.add(2, index);
if(resultList.get(0)==(2))
resultList.add(0, index);
if((resultList.get(0)!=resultList.get(1))&&(resultList.get(1)!=resultList.get(2)&&resultList.get(0)!=resultList.get(2))){
System.out.println("3개의 서로 다른 숫자 생성 완료");
break;
}
}while(true);
System.out.println("루프 끝");
break;
}
if(count==3){
System.out.println("루프를 빠져나가고 결과를 출력합니다.");
break;
}
}while(true);
System.out.println("결과는 "+resultList);
중복되지 않도록 하는것도 리스트에 넣기전에 이미 리스트에 들어가있는 값들과 foreach문으로 전부 비교해서 검사하는게 더 좋아보입니다.
요는 리스트에 넣기전에 검사를 전부 한 후에 넣는다는 겁니다.