public class Lotto{
public static void main(String[] args){
int[] Num=new int[6];
for (int i=0; i < 6; i++){
Num[i] = (int)(Math.random()*45)+1;
for( int j = 0; j < i; j++) { <--의문점 1
if(Num[i] == Num[j]){ <--의문점 2
i -= 1; <--의문점 3
}
}
}
for(int i=0; i < Num.length; i++) { <--의문점 4
System.out.println(Num[i]);
}
}
}
로또 프로그램 입니다.
위 4개는 어떤 기능을 하는지 한줄 한줄 알려주실 분이 있을까요? 제발 부탁 드립니다.
제가 아무래도 원리개념을 이해 못하고 있는 듯 합니다.
너무 많이 답답하네요.
첫댓글 for( int j = 0; j < i; j++) 를 해주는 이유는 바로 아래 조건문에서 배열 num[i] 와 num[j]에 들어간 숫자를 비교하기위해 사용한 것입니다. 즉 위에 for 문을 통해 삽입된 배열 num[i]에 들어간 숫자를 그전에 들어간 배열 num[j]와 같은지를 비교하기 위해 사용한 것입니다.
의문점 2인 if(Num[i] == Num[j]) 은 조건문으로써 Num[i] 에 대입된 숫자를 그전에 들어가있던 배열 num[j]와 비교하여 같은지를 묻고있는 것입니다. 로또에서는 같은 숫자를 받지 못하는 것과 같은 거죠~
의문점 3인 i -= 1; 이것은 위 조건문 if 에서 참이 발생.. 즉 난수를 통해 입력받은 배열 num[i]가 이미 수를 입력받은 배열 num[j]와 같은 경우이므로 수를 잘못 입력받은게 되겠죠? 따라서 num[i]가 다시 수를 받기위해서 즉~ for (int i=0; i < 6; i++) 에 다시 전단계로 돌아가 다른 수를 해당받기 위해서 사용하는
것입니다. 마지막 의문점 4 for(int i=0; i < Num.length; i++) 문은 배열 num[0]부터 Num.length 크기만큼 배열안에 들어가 있는 수를 화면에 출력하기위해 사용하는 것입니다. Num.length는 배열의 크기를 알아내는 것으로 num배열은 크기가 6이므로 여기서 Num.length은 6이 되는 것입니다.
제가 아무래도 코드를 읽거나 응용하는 능력이 너무 부족한거 같아요. ㅠㅠ 큰일이네요. ㅠㅠ
코딩이 지름길이래요.. 코딩을 많이 해 보세요.