본문 바로가기

Programming/Java

명품 java programming 실습문제 : 반복문과 배열 그리고 예외처리

반응형

실습문제

7. 4x4의 2차원 배열을 만들고, 이곳에 1에서 10까지 범위의 정수를 랜덤하게 생성하여 정수 16개를 배열에 저장하고, 2차원 배열을 화면에 출력하라.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import java.util.Random;
 
public class Makingarray{
    public static void main(String[] args) {
        int [][] intArray = new int[4][4]; //배열 생성
        
        for(int i=0; i<intArray.length; i++) { //column에 대한 반복
            for(int j=0; j<intArray[i].length; j++) { //low에 대한 반복
                intArray[i][j] = (int)Math.round(Math.random() * 9 + 1);
                    //1에서 10까지 범위의 정수를 랜덤하게 생성한다.
                System.out.println(intArray[i][j] + " ");
            }
            System.out.println();
        }
        
    }    
}
 
cs

 

간단한 2차원 배열 생성과 원소 초기화, 배열 출력 문제이다.




11.  배열반복문을 이용하여 프로그램을 작성해보자. 키보드에서 정수로 된 돈의 액수를 입력받아 오만 원권, 만 원권, 천 원권, 500원짜리 동전, 100원짜리 동전, 50원짜리 동전, 10원짜리 동전, 1원짜리 동전이 각 몇 개로 변환되는지 출력하라. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import java.util.Scanner;
 
public class ChangingMoney{
    public static void main(String[] args) {
        int[] unit = {5000010000100050010050101}; //배열 사용
        Scanner input = new Scanner(System.in);
        int money = input.nextInt(); //돈의 액수 입력받기는 반복 실행이 아니므로 for문 안에 들어가면 안된다.
        
        for(int i = 0; i<unit.length; i++) { 
            int count = money/unit[i];
            System.out.println(count + "개");
            money = money - (count*unit[i]); //이미 환산된 돈은 잔액에서 빼주기.(돈이 중복으로 계산되면 안되므로)
        } //반복문 끝.
    }    
}
 
cs

 

이 때, 출력이 ~개, ~개, ~개 ,,,, 의 형태로 나열되기 때문에, 각 지폐/동전의 개수 매칭이 헷갈리지 않기 위하여 
count = 0 일 때에도 출력을 해 주었다. 

 


만약 count = 0일 경우에는 출력하지 않도록 하고 싶다면, 전체적인 System.out.println() 문과 함께 코드를 다음과 같이 수정해 주면 된다.

1
2
if(count != 0)
                System.out.println(count + "개");
cs



12. 반복문을 이용하여 369게임에서 박수를 쳐야 하는 경우의 수를 순서대로 화면에 출력해보자. 1부터 시작하여 99까지만 한다. 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
 
public class GameOf369{
    public static void main(String[] args) {
        int quo = 0//초기화
        int res = 0//초기화
        
        for(int i=1; i<=99; i++) {
            res = i%10;
            quo = i/10;
            
            if((quo == 3|| (quo == 6|| (quo == 9)) { //십의 자리 수가 3, 6, 9인 경우
                if((res == 3|| (res == 6|| (res == 9)) { //33, 66, 99에 대한 처리
                    System.out.println(i + " 박수 두번");
                }
                else System.out.println(i + " 박수 한번");
                
                continue//밑의 else if문이 수행되어, '박수한번'이 한 번 더 출력되는 것을 방지.
            }
            
            else if((res == 3|| (res == 6|| (res == 9)) { //일의 자리 수가 3, 6, 9인 경우
                System.out.println(i + " 박수 한번");
            }
            
            else continue//만약 이 모든 조건문에 부합하지 않는 수라면 건너뛰고 i++를 실행시켜주기.
            
        }
    }
}
 
cs


 이 때, 실행 결과는 이런 식으로 출력되어야 한다.


 

이미지에서 보여지는 바와 같이, 

 

1) 30-39, 60-69, 90-99는 모두 박수 한번이 되어야 하고,

2) 이 중 33, 66, 99는 각각 3, 6, 9가 2번씩 포함되어 있으므로 박수 두번이 출력되어야 한다.


   


코드에 대한 설명은 각 코드 옆에 주석으로 달아놓았음.


반응형