출력 결과가 아래와 같이 나오도록 한다.
3 6 9 12 ... 99
5 10 15 20 ... 95
7 14 21 ... 98
9 18 27 ... 99
public class TestProejct_23 {
public static void main(String[] args) {
int numRow=4; //정수형 numRow에 4를 저장한다.
int numCol=100; //정수형 numCol에 100을 저장한다.
int[][] arr = new int[numRow][numCol]; //2차원배열 arr에 numRow와 numCol을 저장한다.
int j=3; // j의 값을 3으로 초기화 한다.
for(int n=0; n<numRow; n++) { //n의 초깃값이 0이고 n이 numRow보다 작을 때 n++한다.
for(int k=0; k<numCol; k++) { //k의 초깃값이 0이고 k가 numCol보다 작을 때 k++한다
if((k>1)&&(k%j==0)) arr[n][k] = k; //만약 k가 1보다 크거나 k%j가 0이면 arr[n][k]에 k값을 저장한다.
else continue; //위 조건식이 일치하지 않으면 continue 한다.
}
j+=2; //j의 값이 2씩 증가되어 j에 저장한다.
}
for(int n=0; n<numRow; n++) {
for(int k=0; k<numCol; k++) {
//만약 arr[n][k]가 0이 아니면 arr[n][k]를 출력한다.
if(arr[n][k]!=0) System.out.printf("%d ", arr[n][k]);
}
System.out.printf("\n");
}
}
}
결과
3 6 9 12 ... 99
5 10 15 20 ... 95
7 14 21 ... 98
9 18 27 ... 99
<코드 설명>
int numRow=4; //정수형 numRow에 4를 저장한다.
int numCol=100; //정수형 numCol에 100을 저장한다.
int[][] arr = new int[numRow][numCol]; //2차원배열 arr에 numRow와 numCol을 저장한다.
=> 2차원 배열 선언을 int[][] arr= new int[4][100]과 같이 숫자를 바로 넣어 사용하지 않고 정수형 데이터에 이름을 넣어주어 .length를 쓰지 않아도 되게끔 하였다.
int j=3; // j의 값을 3으로 초기값으로 선언한다.
//n의 초깃값이 0이고 n이 numRow보다 작을 때 n++한다.
for(int n=0; n<numRow; n++) {
//k의 초깃값이 0이고 k가 numCol보다 작을 때 k++한다.
for(int k=0; k<numCol; k++) {
//만약 k가 1보다 크거나 k%j가 0이면 arr[n][k]에 k값을 저장한다.
if((k>1)&&(k%j==0)) arr[n][k] = k;
//위 조건식이 일치하지 않으면 continue 한다.
else continue;
}
//안쪽 for문이 실행되어 밖으로 나오면 j의 값이 2씩 증가되어 j에 저장된다.
j+=2;
}
=> 행의 첫번째 숫자가 3, 5, 7, 9가 나오게끔 해야 하기 때문에 int j의 초기값을 3으로 하여 선언한다.
=> 다음 이중 for문을 이용하여 n의 초깃값이 0이고 n이 numRow보다 작으니 참이 되어 안쪽 for문으로 이동하고 k초깃값 0이고, k가 numCol보다 작으니 참이 되어 if문으로 이동하여 조건식 k가 1보다 크거나 k와 j를 나누었을 때 나머지가 0이면 arr[n][k]에 k값을 저장한다. k%j의 나머지가 0이 되어야 3, 5, 7, 9의 배수를 출력하기 때문에 조건식을 k%j==0으로 써야 한다.
if문 조건식이 거짓이면 continue해서 거짓인 값은 출력이 되지 않는다.
그렇게 안쪽 for문이 반복을 하다가 k가 numCol(100)보다 크면 거짓이 되어 j+=2를 하고 바깥 for문으로 이동하여 n이 1 증가하고 조건식을 차례로 진행하여 출력하게 된다.
for(int k=0; k<numCol; k++) {
//만약 arr[n][k]가 0이 아니면 arr[n][k]를 출력한다.
if(arr[n][k]!=0) System.out.printf("%d ", arr[n][k]);
}
System.out.printf("\n");
=> 위에서 만든 배열을 저장하고 출력하기 위해 for문을 한 번 더 써주어 k 초기값이 0이고 k가 numCol보다 작으니 참이 되어 if문으로 내려가 arr[n][k]!=0 를 실행하게 되면 0이 출력되지 않게된다. 그리고 arr[n][k]를 출력하여 for문이 시행을 마칠 때마다 \n을 이용하여 줄바꿈하도록 하였다.
'프로그래밍 > Java TestProject' 카테고리의 다른 글
Java_2차원 배열을 이용하여 평균과 등급 구하기 (1) | 2022.11.02 |
---|---|
Java_계산기 만들기 (0) | 2022.10.19 |
Java_2차원 배열에 이중 for문을 이용해 구구단 출력하기 (2) | 2022.10.15 |
Java_Scanner클래스를 이용해 정수 2개를 입력받아 무한 반복 구구단 출력하기 (0) | 2022.10.14 |
Java_Scanner 클래스를 이용해 while문, if문, switch문, case문 사용하기 (0) | 2022.10.14 |