자바 이중for문 질문입니다.
조회수 647회
import java.util.Scanner; import java.util.Arrays;
public class test1 { public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int[] num;
num = new int[7];
int[] num2 = new int[7];
System.out.print("6개의 숫자와 보너스 숫자 1개를 입력하세요! : ");
for (int i = 0; i < num.length; i++) {
num[i] = scan.nextInt();
for (int j = 0; j < i; j++) {
if (num[i] == num[j]) {
i--;
System.out.print("숫자가 중복됐습니다. 다시 입력하세요! : ");
break;
}
}
}
System.out.println(Arrays.toString(num));
scan.close();
}
}
위 코드를 실행하면 break를 넣었는데도, "숫자가 중복됐습니다. 다시 입력하세요! : " 라는 문장이 6번 출력되고 종료합니다. 제가 놓치고 있는 부분이 무엇인지 모르겠습니다. 피드백 부탁드립니다.
1 답변
-
for (int j = 0; j < i; j++) { if (num[i] == num[j]) {
위 코드의 의미는
num[i]
와num
의 모든 숫자와 비교하여 같은지 비교하라입니다.그 윗줄에서
num[i]
에 어떤 값을 넣었으면,num
에는 반드시num[i]
가 존재하게 되니 해당 if는 반드시 한번 일치하게 됩니다. 그러니 6번숫자가 중복됐습니다. 다시 입력하세요! :
이 출력되게 되구요.이 문제를 해결하려면
num[i]
는 비교에서 제외하는 식으로 if를 변경하면 되겠죠?if (i != j && num[i] == num[j]) {
댓글 입력