자바 이중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 답변

  • 좋아요

    0

    싫어요
    채택 취소하기
            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]) {
    
    • 답변 감사합니다 ! yubin cho 2021.12.20 09:07

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)