JAVA 2d array, enhanced for, 문제풀이 (230626)

이원건·2023년 6월 26일
0

JAVA

목록 보기
18/33
post-thumbnail

1. 아래의 2차원 배열에 대하여 메모리를 그리시오.

  • 문제
int[][] arr = {
		{11},
		{22, 33},
		{44, 55, 66}
};


2. enhanced for 문에 대하여 설명하시오.

  • stream으로 출력하는 only read만 가능한 for문
    for(int num : numArr){
    	System.out.println(num);
    }

이런 문법을 사용한다.


3.아래를 프로그래밍 하시오.

  • 🚩 실습문제 5
    2차원 배열의 행과 열의 크기를 사용자에게 직접 입력받되, 1~10사이 숫자가 아니면
    “반드시 1~10 사이의 정수를 입력해야 합니다.” 출력 후 다시 정수를 받게 하세요.
    크기가 정해진 이차원 배열 안에는 영어 대문자가 랜덤으로 들어가게 한 뒤 출력하세요.
    (char형은 숫자를 더해서 문자를 표현할 수 있고 65는 A를 나타냄, 알파벳은 총 26글자)
실행 화면
행 크기 : 5
열 크기 : 4
T P M B
U I H S
Q M B H
H B I X
G F X I
  • 코드
import java.util.Scanner;

class RandomArray{
	public static Scanner scanner = new Scanner(System.in);
	private int row, col;

	public RandomArray() {
		setRow();
		setCol();
	}

	public int getRow() {
		return row;
	}

	public void setRow() {
		int row;
		while(true) {
			System.out.print("행 크기: ");
			row = scanner.nextInt();		
			if(row >= 1 && row<=10) break;
			System.out.println("반드시 1~10 사이의 정수를 입력해야 합니다.");
		}
		this.row = row;
	}

	public int getCol() {
		return col;
	}

	public void setCol() {
		int col;
		while(true) {
			System.out.print("열 크기: ");
			col = scanner.nextInt();		
			if(col >= 1 && col<=10) break;
			System.out.println("반드시 1~10 사이의 정수를 입력해야 합니다.");
		}
		this.col = col;
	}
	
	public char[][] createArray() {
		char charArr[][] = new char[getRow()][getCol()];
		for(int i =0;i<charArr.length;i++) {
			for(int j =0;j<charArr[i].length;j++) {
				charArr[i][j] = (char)(Math.random()*26+65);
			}
		}
		return charArr;
	}
	
	public void showArray() {
		char[][] charArr = createArray(); 
		for(int i =0 ;i<charArr.length;i++) {
			for(int j =0;j<charArr[i].length;j++) {
				System.out.print(charArr[i][j] + " ");
			}
			System.out.println();
		}
	}
	
}


public class RandomArrayMain {
	public static void main(String[] args) {
		RandomArray ra;
		String menu;
		while(true) {
			ra = new RandomArray();
			ra.showArray();
			
			System.out.print("계속 하시겠습니까? (y,n)");
			RandomArray.scanner.nextLine();
			menu = RandomArray.scanner.nextLine();
			if("no".compareToIgnoreCase(menu) == 0 || "n".compareToIgnoreCase(menu) == 0) {
				break;
			} else {
				
			}
		}
		System.out.println("프로그램 종료");
	}
}
  • 결과
행 크기: 5
열 크기: 3
Y S B 
U C O 
M L M 
K S P 
H C F 
계속 하시겠습니까? (y,n)y
행 크기: 7
열 크기: 2
K K 
I H 
E L 
T T 
F P 
P N 
C N 
계속 하시겠습니까? (y,n)
행 크기: 11
반드시 1~10 사이의 정수를 입력해야 합니다.
행 크기: 10
열 크기: 0
반드시 1~10 사이의 정수를 입력해야 합니다.
열 크기: 2
W Y 
S U 
G J 
I F 
B O 
D L 
P P 
X V 
V U 
I M 
계속 하시겠습니까? (y,n)

4. 아래 문제를 푸시오.

실행 화면
행 인덱스 입력: 4
열 인덱스 입력: 2
  0 1 2 3 4 5
0
1
2
3
4     X
5
  • 코드
import java.util.Scanner;

public class A2DRespectX {
	static Scanner scanner = new Scanner(System.in);
	
	static char respectX[][] = new char[6][6]; 
	
	public static void practice9( ) {
		int row, col;
		
		System.out.print("행 인덱스 입력: ");
		row = scanner.nextInt();
		System.out.print("열 인덱스 입력: ");
		col = scanner.nextInt();
		
		scanner.nextLine();
		respectX[row][col] = 'X';
	
		
		showRespectX();
	}
	
	public static void showRespectX() {
		System.out.print("  ");
		for(int i =0;i<respectX.length;i++) {
			System.out.print( i + " ");
		}
		System.out.println();
		for(int i =0;i<respectX.length;i++) {
			System.out.print(i + " ");
			for(int j =0;j<respectX[i].length;j++) {
				System.out.print(respectX[i][j] + " ");
			}
			System.out.println();
		}
		System.out.println();
	}
	
	public static void main(String[] args) {
		String menu;
		while(true) {
			practice9();
			
			System.out.print("계속 하시겠습니까?(y, n) ");
			menu = scanner.nextLine();
			
			if("n".compareToIgnoreCase(menu)== 0 || "no".compareToIgnoreCase(menu) == 0) {
				break;
			}
		}
		System.out.println("프로그램 종료");
	}
}
  • 결과
행 인덱스 입력: 4
열 인덱스 입력: 5
  0 1 2 3 4 5 
0
1
2
3
4           X
5

계속 하시겠습니까?(y, n) 
행 인덱스 입력: 3
열 인덱스 입력: 4
  0 1 2 3 4 5 
0 
1
2
3         X
4           X
5

계속 하시겠습니까?(y, n) 
행 인덱스 입력: 2
열 인덱스 입력: 2
  0 1 2 3 4 5 
0 
1
2     X
3         X
4           X
5

계속 하시겠습니까?(y, n) n
프로그램 종료

0개의 댓글