백엔드 과정/Java
Java 문제풀이 4-3. 이차원 배열로 랜덤 영문자 출력하기.
mim
2021. 12. 27. 18:12
반응형
문제
/* 가로와 세로 길이를 정수형으로 입력 받아 입력받은 가로 세로 길이를 이용하여
* 이차원 배열을 할당하고 각 인덱스에는 랜덤으로 알파벳 대문자 넣어서 출력
*
* 단, 가로 행 혹은 세로 열은 반드시 1~10 까지의 정수를 입력해야 하고 그렇지 않은 경우에는
* "반드시 1~10까지의 정수를 입력해야 합니다. 다시 입력하세요." 출력 후
* 가로 행 또는 세로 열을 다시 입력받을 수 있도록 한다.
*
* -- 입력 예시 --
* 가로 행의 수를 입력하세요 : 5
* 세로 열의 수를 입력하세요 : 4
*
* -- 출력 예시 --
* F H Z G
* W F O T
* O R X V
* W H J X
* W S S J
*/
작성한 코드)
while(true) {
Scanner sc = new Scanner(System.in);
System.out.print("가로 행의 수를 입력하세요 : ");
int row = sc.nextInt();
System.out.print("세로 열의 수를 입력하세요 : ");
int column = sc.nextInt();
/*입력받은 정수가 1~10 사이인지 판별*/
if((row>=1 || row <= 10) && (column>=1 ||column <= 10)) {
int[][] iarr = new int[row][column];
/*반복문을 이용한 값 대입*/
for (int i = 0; i < iarr.length; i++) {
for (int j = 0; j < iarr[i].length; j++) {
/*랜덤 대문자를 발생시키는 변수 선언*/
char random = (char) ((Math.random() * 26) + 'A');
iarr[i][j] += random;
}
}
for (int i = 0; i < iarr.length; i++) {
for (int j = 0; j < iarr[i].length; j++) {
System.out.print((char) (iarr[i][j]) + " ");
}System.out.println();
}
break; //출력이 끝나면 종료
} else {System.out.println("반드시 1~10까지의 정수를 입력해야 합니다. 다시 입력하세요.");
}
반복문을 무분별하게 사용한 아래 코드로 문제 풀이가 출력되는지 잘 작동하는지 확인 후
위에 코드로 불필요한 조건문 부분을 수정하였다.
특히 while문 do-while문이 너무나 혼용되어 사용되고 있고.. 이 부분은 문제를 자주 풀어보면서 익숙해져야 할 것 같다.
while (true) {
Scanner sc = new Scanner(System.in);
System.out.print("가로 행의 수를 입력하세요 : ");
int row = sc.nextInt();
System.out.print("세로 열의 수를 입력하세요 : ");
int column = sc.nextInt();
do {
/* 입력받은 정수가 1~10의 사이인지 확인 */
if (row <= 10 && column <= 10) {
int[][] iarr = new int[row][column];
for (int i = 0; i < iarr.length; i++) {
for (int j = 0; j < iarr[i].length; j++) {
/* 랜덤 대문자 생성하여 배열에 값 대입 */
char random = (char) ((Math.random() * 26) + 'A');
iarr[i][j] += random;
}
}
/* 반복문을 이용한 출력문 */
for (int i = 0; i < iarr.length; i++) {
for (int j = 0; j < iarr[i].length; j++) {
System.out.print((char) (iarr[i][j]) + " ");
}System.out.println();
}
return; //배열을 다 출력하고 나면 반복문을 종료한다.
} else {
System.out.println("반드시 1~10까지의 정수를 입력해야 합니다. 다시 입력하세요.");
}
} while (false);
}
아직까지도 반복문의 중첩 사용에서 헷갈리고 있다....
조건문 안에는 조건도 없고.. 스캐너로 입력받을 문구를 반복하기만을 위해 반복문을 썼을 뿐 ...
휴 더 깔끔하게 작성할 수 있도록 연습해야겠다.

반응형