본문 바로가기

Language/JAVA

[명품 JAVA programming] CHAPTER 3 반복문과 배열 그리고 예외 처리(실습문제)

#3

Scanner를 이용하여 정수를 입력받고 다음과 같이 *을 출력하는 브로그램을 작성하라. 다음은 5를 입력받았을 경우이다.

정수를 입력하시오>> 5

*****

****

***

**

*

import java.util.*;

public class Ex3_3 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);

        System.out.print("정수를 입력하시오>>");
        int n = scan.nextInt();

        for(int i=n;i>0;i--){ // int(i=0;i<n;i++)
            for(int j=0;j<i;j++){
                System.out.print("*");
            }
            System.out.println();
        }
        scan.close();
    }
}

 

#4

Scanner를 이용하여 소문자 알파벳을 하나 입력받고 다음과 같이 출력하는 프로그램을 작성하라. 다음은 e를 입력받았을 경우이다.

소문자 알파벳 하나를 입력하시오>> e

abcde

abcd

abc

ab

a

import java.util.*;

public class Ex3_4 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);

       
        System.out.print("소문자 알파벳 하나를 입력하시오>>");
       
        // 'a'=97, 'z'=122
        char aString = scan.next().charAt(0);
        int num = (int)aString;

        for(int i=num;i>96;i--){
            for(int j=97;j<i;j++){
                System.out.print((char)j);
            }
            System.out.println();
        }
        scan.close();
    }
}

scan.next( ).charAt(0) 으로 문자열 읽기

입력받은 문자열의 아스키 값 num에 입력

 

#5

양의 정수를 10개 입력받아 배열에 저장하고, 배열에 있는 정수 중에서 3의 배수만 출력하는 프로그램을 작성하라

import java.util.*;

public class Ex3_5 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);

        int i;
        int [] arr = new int [10];
        System.out.println("양의 정수 10개를 입력하세요 : ");
         
        for(i=0;i<arr.length;i++){
            arr[i] = scan.nextInt();
        }

        System.out.print("3의 배수는 : ");
        for(i=0;i<arr.length;i++){
            if(arr[i]%3==0){
                System.out.print(arr[i] + " ");
            }
        }
        scan.close();
    }
}

 

#7

정수를 10개 저장하는 배열을 만들고 1에서 10까지 범위의 정수를 랜덤하게 생성하여 배열에 저장하라. 그리고 배열에 든 숫자들과 평균을 출력하라.

import java.util.*;

public class Ex3_7 {
    public static void main(String[] args) {

        int [] arr = new int [10]; // 정수 10개를 저장하는 배열
        int sum = 0;
       
        for(int i=0 ; i<arr.length ; i++){
            arr[i] = (int)(Math.random()*10+1); // random()은 double형 난수를 출력하므로 (int)로 형변환(casting)
            sum += arr[i];
        }

        System.out.print("랜덤한 정수들 : ");
        for(int i=0 ; i<arr.length ; i++){
            System.out.print(arr[i]+" ");
        }
       
        System.out.print("평균 : "+(float)sum/arr.length);
    }
}

자바에서 난수를 얻는 방법

1) Math 클래스의  Math.random() 메소드 : 0.0에서 1사이의 double형의 난수를 얻는데만 사용

2) Random 클래스 : boolean, int, long, float, double 난수를 얻을 수 있음

>> Math.random()에서 생성하는 0.0~1.0사이의 난수에 x10을 하여 1~10사이의 랜덤값을 출력하도록 

 

#8

정수를 몇 개 저장할지 키보드로부터 개수를 입력받아(100보다 작은 개수) 정수 배열을 생성하고, 이곳에서 1~100까지의 범위의 정수를 랜덤하게 삽입하라. 배열에는 같은 수가 없도록 하고 배열을 출력하라.

import java.util.*;

public class Ex3_8 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);

        System.out.print("몇 개의 정수를 저장할 것인가? : ");
        int num = scan.nextInt();
       
        int [] arr = new int [num]; // 입력받은 num개의 배열 생성 -- 여기에 랜덤하게 1~100 숫자 저장 및 출력

        for(int i=0;i<arr.length;i++){
            arr[i] = (int)(Math.random()*100+1); // 1~100까지의 난수 생성
            for(int j=0;j<i;j++){ // 중복 제거
                if(arr[i] == arr[j]){
                    i--;
                }
            }
        }

        for(int i=0;i<arr.length;i++){ // 출력
            System.out.print(arr[i] + " ");
            if((i+1)%10 == 0){ // 한줄에 최대 10개의 값 출력
                System.out.println();
            }
        }
        scan.close();
    }
}

 

#9

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

import java.util.*;

public class Ex3_9 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
   
        int [][] arr = new int [4][4]; // 2차원 배열 생성

        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);
            }
        }

        for(int i=0 ; i<arr.length ; i++){
            int j;
            for(j=0 ; j<arr[i].length ; j++){
                System.out.print(arr[i][j] + " ");
            }
            if(j==arr[i].length){ // i값이 바뀌면 출 바꾸기
                System.out.println();
            }
        }
        scan.close();
    }
}

 

#13

반복문을 사용하여 369게임에서 박수를 쳐야 하는 경우를 순서대로 화면에 출력해보자. 1부터 시작하며 99까지만 한다. 실행 사례는 다음과 같다.

public class Ex3_13 {
    public static void main(String[] args) {
        int a,b; // a,b를 for문 밖에서 먼저 선언해줘야함
       
        for(int i=1;i<100;i++){
            a = i/10; // 1의 자리 수
            b = i%10; // 10의 자리 수

            if((a==3||a==6||a==9) && (b==3||b==6||b==9)){ // 둘중 하나만 3의 배수여야야 짝짝
                System.out.println(i+" 박수 짝짝");
            }
            else if((a==3||a==6||a==9) || (b==3||b==6||b==9)){
                System.out.println(i+" 박수 짝");
            }
        }
    }
}