본문 바로가기

Language/JAVA

[명품 JAVA programming] CHAPTER 2 자바 기본 프로그래밍(실습문제)

#1

// 1$ = 1100원
import java.util.*;

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

        System.out.print("원화를 입력하세요(단워 원) >> ");
        float won = scan.nextInt();
        float dollar = won/1100;
        System.out.print(won+"은 "+"$"+dollar+"입니다.");

        scan.close();
    }
}

 

#2

import java.util.*;

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

        System.out.print("2자리수 정수 입력(10~99) >> ");
        int num = scan.nextInt();
       
        if (num/10 == num%10){
            System.out.print("Yes! 10의 자리와 1의 자리가 같습니다.");
        }
        else {
            System.out.print("10의 자리와 1의 자리가 같지 않습니다.");
        }
    scan.close();
    }    
}

 

#3

import java.util.*;

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

        System.out.print("금액을 입력하시오 >> ");
        int amount = scan.nextInt();
        int num;

        if(amount>=50000){
            num = amount/50000;
            System.out.println("오만원권 "+num+"매");
            amount -= 50000*num;
        }
        else{
            System.out.println("오만원권 없음");
        }

        if(amount>=10000){
            num = amount/10000;
            System.out.println("만원권 "+num+"매");
            amount -= 10000*num;
        }
        else{
            System.out.println("만원권 없음");
        }

        if(amount>=1000){
            num = amount/1000;
            System.out.println("천원권 "+num+"매");
            amount -= 1000*num;
        }
        else{
            System.out.println("천원권 없음");
        }

        if(amount>=100){
            num = amount/100;
            System.out.println("백원 "+num+"개");
            amount -= 100*num;
        }
        else{
            System.out.println("백원 없음");
        }
       
        if(amount>=50){
            num = amount/50;
            System.out.println("오십원 "+num+"개");
            amount -= 50*num;
        }
        else{
            System.out.println("오십원 없음");
        }

        if(amount>=10){
            num = amount/10;
            System.out.println("십원 "+num+"개");
            amount -= 10*num;
        }
        else{
            System.out.println("십원 없음");
        }

        if(amount>=1){
            System.out.println("일원 "+amount+"개");
        }
        else{
            System.out.println("일원 없음");
        }
        scan.close();
    }
}

 

#4

Scanner 클래스로 정수 3개를 입력받고 3개의 숫자 중 중간 크기의 수를 출력하라.

import java.util.*;

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

        System.out.print("정수 3개를 입력하세요 : ");

        int a=scan.nextInt();
        int b=scan.nextInt();
        int c=scan.nextInt();
        int max=0;
        int middle=0;
        int last=0;

        if(a>b){
            max=a;
            middle=b;
        }
        else{
            max=b;
            middle=a;
        }

        if(c>max){
            middle=max;
            max=c;
        }
        else{
            if(c>middle){
                middle = c;
                last = middle;
            }
        }

        System.out.println("중간 값은 : " + middle);


        scan.close();
    }
}

입력한 정수 3개 즉, 중간값으로 나올 수 있는 값의 갯수는 3개

a>b -- b>c : 중간값 b

       -- b<c -- a>c : 중간값 : c

                 -- a<c : 중간값 : a

//sol 2
        System.out.print("정수 3개 입력>>");

        int a = scan.nextInt();
        int b = scan.nextInt();
        int c = scan.nextInt();

        if((a<b && b<c)||(c<b && b<a)) {System.out.print("중간 값은"+b+"입니다.");}
        else if((b<a && a<c)||(c<a && a<b)) {System.out.print("중간 값은"+a+"입니다.");}
        else {System.out.print("중간 값은"+c+"입니다.");}

 

#5

Scanner를 이용하여 삼각형의 변의 길이를 나타내는 정수를 3개 입력받고 이 3개의 수로 삼각형을 만들 수 있는지 판별하라. 삼각형이 되려면 두 변의 합이 다른 한 변의 합보다 커야한다.

import java.util.*;

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

        System.out.print("정수 3개를 입력하세요>> ");

        int a = scan.nextInt();
        int b = scan.nextInt();
        int c = scan.nextInt();
        int max = 0;

        // 3개의 정수 중 가장 큰 정수 max 구하기
        if(a>=b && a>=c){
            max=a;
            if(max<b+c){
                System.out.print("삼각형이 될 수 있습니다.");
            }
            else{
                System.out.print("삼각형이 될 수 없습니다.");
            }
        }
        else if(b>=a && b>=c){
            max=b;
            if(max<a+c){
                System.out.print("삼각형이 될 수 있습니다.");
            }
            else{
                System.out.print("삼각형이 될 수 없습니다.");
            }
        }
        else{
            max=c;
            if(max<b+a){
                System.out.print("삼각형이 될 수 있습니다.");
            }
            else{
                System.out.print("삼각형이 될 수 없습니다.");
            }
        }

        scan.close();
    }
   
}

sol2 : 될 수 없는 경우를 조건으로 하면 나머지 경우는 삼각형을 만들 수 있음

if((a+b<c)||(b+c<a)||(c+a<b)){
            System.out.print("삼각형이 될 수 없습니다.");
        }
        else{
            System.out.print("삼각형이 될 수 있습니다.");
        }

 

#6

369게임을 간단히 작성해보자. 1~99까지의 정수를 입력받고 정수에 3,6,9 중 하나가 있는 경우는 "박수짝"을 출력하고 두 개 있는 경우는 "박수짝짝"을 출력하는 프로그램을 작성하라. 예를 들면 키보드로 입력된 수가 13인 경우 "박수짝"을, 36인 경우 "박수짝짝"을 출력하면 된다.

import java.util.*;

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

        System.out.print("1~99 사이의 정수를 입력하세요 : ");
        int num = scan.nextInt();
        int cnt=0;

        int a=num/10;
        int b=num%10;

        if((a%3==0)){
            cnt++;
        }
        if((b%3==0)){
            cnt++;
        }

        switch ((cnt)) {
            case 1:
                System.out.print("박수짝");
                break;
            case 2:
                System.out.print("박수짝짝");
                break;    
            default:
                System.out.print("pass");
                break;
        }
       
        scan.close();
    }
}

오류 : 한자리수를 입력했을 때 10의 자리수가 없어서 (10의자리)%3=0으로 인식해서 한자리수를 입력하더라도 "박수짝 출력"

sol 2 : 두자리 수일때만 10의 자리 수가 3의 배수인지 확인

import java.util.*;

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

        System.out.print("1~99 사이의 정수를 입력하세요 : ");
        int num = scan.nextInt();
        int cnt=0;

        int a=num/10;
        int b=num%10;

        if(num>10){
            if((a%3==0)){
                cnt++;
            }
        }
       
        if((b%3==0)){
            cnt++;
        }

        switch ((cnt)) {
            case 1:
                System.out.print("박수짝");
                break;
            case 2:
                System.out.print("박수짝짝");
                break;    
            default:
                System.out.print("pass");
                break;
        }
       
        scan.close();
    }
}

 

#7

2차원 평면에서 직사각형은 왼쪽 상단 모서리와 오른쪽 하단 모서리의 두 점으로 표현한다. (100,100)과 (200,200)의 두 점으로 이루어진 사각형이 있을 때, Scanner를 이용하여 정수 x와 y 값을 입력받고 점 (x,y)가 이 사각형 안에 있는지 판별하는 프로그램을 작성하라.

import java.util.*;

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

        System.out.print("점 (x,y)의 좌표를 입력하시오>>");
        int x = scan.nextInt();
        int y = scan.nextInt();

        if((x<=200 && x>=100) && (y<=200 && y>=100)){System.out.println("("+x+","+y+")는 직사각형 안에 있습니다.");}
        else{System.out.println("("+x+","+y+")는 직사각형 안에 없습니다.");}

        scan.close();
    }
}

 

#9

원의 중심을 나타내는 한 점과 반지름을 실수 값으로 입력받아라. 그리고 실수 값으로 다른 점 (x,y)를 입력받아 이 점이 원의 내부에 있는지 판별하여 출력하라.

import java.util.*;

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

        System.out.print("원의 중심과 반지름 입력(실수)>>");
        float cx = scan.nextFloat();
        float cy = scan.nextFloat();
        float radius = scan.nextFloat();

        System.out.print("점 입력>>");
        float x = scan.nextInt();
        float y = scan.nextInt();

        if(((cx-x)*(cx-x)+(cy-y)*(cy-y))<=radius*radius){
            System.out.print("점 ("+x+","+y+")는 원 안에 있다.");
        }
        else{System.out.print("점 ("+x+","+y+")는 원 안에 없다.");}

        scan.close();
    }
}

한 점이 원의 내부에 있는 경우

원의 중심 : (cx, cy), 임의의 좌표 : (x,y)

>> (cx-x)^2+(cy-y)^2 <= radius^2인 경우 그 점은 원 안에 있다.

 

#11

숫자를 입력받아 3~5는 "봄", 6~8은 "여름", 9~11은 "가을", 12,1,2의 경우 "겨울"을, 그 외 숫자를 입력한 경우 "잘못입력"을 출력하는 프로그램을 작성하라.

import java.util.*;

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

        System.out.print("달을 입력하세요(1~12)>>");
        int month = scan.nextInt();

        switch (month) {
            case 3:
            case 4:
            case 5:
                System.out.print("봄");
                break;
            case 6:
            case 7:
            case 8:
                System.out.print("여름");
                break;
            case 9:
            case 10:
            case 11:
                System.out.print("가을");
                break;
            case 12:
            case 1:
            case 2:
                System.out.print("겨울");
                break;
            default:
                System.out.print("잘못입력");
        }
        scan.close();
    }
}