IT 이야기/JAVA

[명품 JAVA Programming] 실습문제 3장 10번 문제 해결하기

왼손잡이 에언 2021. 2. 15. 02:44

* 책: 명품 JAVA Programming

* 문제: 실습문제 3장 10번 (3-10)

*  4*4의 2차원 배열을 만들고 이곳에 1에서 10까지 범위의 정수를 10개만 랜덤하게 생성해 임의의 위치에 삽입하라. 동일한 정수가 있어도 상관없다. 나머지 6개의 숫자는 모두 0이다. 만들어진 2차원의 배열을 화면에 출력하라.

 

* 명세서

1. 4*4의 2차원 배열을 만들고

2. 정수를 랜덤하게 생성해 배열에 저장

3. 6개의 위치를 랜덤으로 설정해 0으로 만들어준다

4. 2차원 배열 출력

 

* 소스코드

/*
 * ch03 10번 문제
 * 4*4인 2차원 배열을 만들고
 * 이곳에 1~10까지 정수를 10개를 랜덤하게 생성해
 * 임의의 위치에 삽입하고
 * 남은 6개의 수는 모두 0이다.
 * 단, 동일한 정수가 있어도 상관없다.
 * 만들어진 2차원 배열을 화면에 출력하라.
*/ 

public class ex10 {
	public static void main(String [] args) {
		
		int count=1;
		int n1=0, n2=0;
		
		// 4*4인 2차원 배열을 만들고
		int [][]arr = new int[4][4];  
		 
		// 정수를 랜덤하게 생성해 저장
		for(int i=0; i<arr.length; i++) 
			for(int j=0; j<arr[i].length; j++) 
				arr[i][j] = (int)(Math.random()*10+1);  
			 
		// 6개의 수를 랜덤으로 0으로 만들어주기
		while(count<7) {
			n1 =  (int)(Math.random()*3);  // 4*4 배열이기 때문에 0~3까지
			n2 =  (int)(Math.random()*3); 
			
			if(arr[n1][n2] != 0) {
				arr[n1][n2] = 0;
				count++;
			}
		}
		
		// 배열 출력
		for(int i=0; i<arr.length; i++) {
			for(int j=0; j<arr[i].length; j++) {
				System.out.print(arr[i][j]+ " ");
			}
			System.out.println(" "); 
		}
		
	}

}

* 실행결과