ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [명품 JAVA Programming] chapter02 실습문제
    JAVA 2021. 1. 21. 10:53

    1. 원화를 입력받아 달러로 바꾸어 다음 예시와 같이 출력하는 프로그램을 작성하라. $1 = 1100원으로 가정하고 계산한다.

     

    import java.util.Scanner;
    
    
    public class practice1 {
    
        public double wontodollar(int won) {
            return won * 1/1100;
        }
        public static void main(String args[]){
    
            System.out.print("원화를 입력하세요(단위 원) >> ");
            Scanner scanner = new Scanner(System.in);
            int won = scanner.nextInt();
    
            practice1 p1 = new practice1();
            double dollar = p1.wontodollar(won);
    
            System.out.print(won + "원은 $" + dollar + "입니다.");
    
            scanner.close();
        }
    }
    

     

     

    -> 1원 = $1/1100이므로 원 단위에 1/1100을 곱해준다.

     


     

    2. 2자리의 정수(10~99사이)를 입력받고, 십의 자리와 1의 자리가 같은지 판별하여 출력하는 프로그램을 작성하라.

     

     

    import java.util.Scanner;
    
    public class practice2 {
    
        public boolean equal(int num){
            if((num / 10) == (num % 10)){
                return true;
            }else{
                return false;
            }
        }
        public static void main(String args[]){
            Scanner scanner = new Scanner(System.in);
            System.out.print("2자리수 정수 입력(10~99) >> ");
            int num = scanner.nextInt();
    
            practice2 p2 = new practice2();
            boolean dis = p2.equal(num);
    
            if(dis){
                System.out.println("Yes! 10의 자리와 1의 자리가 같습니다.");
            }else{
                System.out.println("No! 10의 자리와 1의 자리가 같지 않습니다.");
            }
            
            scanner.close();
        }    
    }
    

     

     

    -> num을 10으로 나눈 몫(십의 자리)와 num을 10으로 나눈 후 나머지(1의 자리)가 같은지 같지 않은지 판별.

     


     

    3. 정수로 된 돈의 액수를 입력받아 오만 원권, 만 원권, 천 원권, 500원짜리 동전, 100원짜리 동전, 10원짜리 동전, 1원짜리 동전

    각 몇 개로 변환되는지 출력하라.

     

    import java.util.Scanner;
    
    public class practice3 {
        public static void main(String args[]){
            Scanner scanner = new Scanner(System.in);
            System.out.print("금액을 입력하시오 >>> ");
            int money = scanner.nextInt();
    
            int oman = money / 50000;
            int man = money % 50000 / 10000;
            int cheon = money % 10000 / 1000;
            int back = money % 1000 /100;
            int oship = money % 100 / 50;
            int ship = money % 50 / 10;
            int ill = money % 10;
    
            System.out.println("오만원권 " + oman + "매");
            System.out.println("만원권 " + man + "매");
            System.out.println("천원권 " + cheon + "매");
            System.out.println("백원 " + back + "개");
            System.out.println("오십원 " + oship + "개");
            System.out.println("십원 " + ship + "개");
            System.out.println("일원 " + ill + "개");
    
            scanner.close();
        }
    }
    

     

     

    -> 금액을 입력받고, 금액을 큰 화폐단위로 나눈다. 그 몫을 각 화폐단위에 저장한다.

    나눈 다음, 금액을 나눈 화폐단위로 나누어 나머지를 구한 후 금액을 갱신한다. 그후, 10단위까지 앞의 과정 반복.

     


     

    4. 정수 3개를 입력받고 3개의 숫자 중 중간 크기의 수를 출력하라. 평균값을 구하는 것이 아님에 주의하라.

     

    import java.util.Scanner;
    
    public class practice4 {
    
        public int midnum(int num1, int num2, int num3){
            int mid;
            if((num1 > num2 && num2 > num3) || (num1 < num2 && num2 < num3)){
                mid = num2;
            }else if((num1 > num2 && num1 < num3) || (num2 > num1 && num1 > num3)){
                mid = num1;
            }else{
                mid = num3;
            }
            return mid;
        }
        public static void main(String args[]){
            Scanner scanner = new Scanner(System.in);
            System.out.print("정수 3개를 입력하시오 >> ");
            int num1 = scanner.nextInt();
            int num2 = scanner.nextInt();
            int num3 = scanner.nextInt();
    
            practice4 p4 = new practice4();
            int midnum = p4.midnum(num1, num2, num3);
    
            System.out.println("중간값은 " + midnum);
    
            scanner.close();
        }
    }
    

     

    -> 비교를 통해 중간값 산출

     


     

    5. 삼각형의 변의 길이를 나타내는 정수 3개를 입력받고 이 3개의 수로 삼각형을 만들 수 있는지 판별하라.

    삼각형이 되려면 두 변의 합이 다른 한 변의 합보다 커야한다.

     

    import java.util.Scanner;
    
    public class practice5 {
        public static void main(String args[]){
            System.out.print("정수 3개를 입력하시오 >> ");
            Scanner scanner = new Scanner(System.in);
    
            int n1 = scanner.nextInt();
            int n2 = scanner.nextInt();
            int n3 = scanner.nextInt();
    
            if((n1 + n2 > n3) || (n1 + n3 > n2) || (n2 + n3 > n1)){
                System.out.println("삼각형이 됩니다.");
            }else{
                System.out.println("삼각형이 되지 못합니다.");
            }
    
            scanner.close();
        }
    }
    

     

    -> 비교문을 통해 각 두 변의 합이 다른 한 변의 합보다 큰지 판별

     


     

    6. 369 게임을 간단히 작성해보자. 1~99까지의 정수를 입력받고 정수에 3, 6, 9 중 하나가 있는 경우는 "박수짝"을 출력하고 두 개

    있는 경우는 "박수짝짝"을 출력하는 프로그램을 작성하라.

     

    import java.util.Scanner;
    
    public class practice6 {
    
        public void num369(int num){
    
            int first = num / 10;
            int second = num % 10;
            if((first % 3 == 0) || (second % 3 == 0)){
                System.out.println("박수짝");
            }else if((first % 3 == 0) && (second % 3 == 0)){
                System.out.println("박수짝짝");
            }
        }
        public static void main(String args[]){
            System.out.print("1~99 사이의 정수를 입력하시오 >> ");
            Scanner sc = new Scanner(System.in);
            int num = sc.nextInt();
            practice6 p6 = new practice6();
            p6.num369(num);
            sc.close();
        }
    }
    

     

     

    -> 십의 자리(num / 10)와 일의 자리(num % 10)을 구해서 십의 자리와 일의 자리가 각각 같은지 비교해서 다르게 출력.

     


     

    7. 2차원 평면에서 직사각형은 왼쪽 상단 모서리와 오른쪽 하단 모서리의 두 점으로 표현한다.

    (100, 100)과 (200, 200)의 두 점으로 이루어진 사각형이 있을 때, 정수 x, y 값을 입력받고 점(x, y)가 이 직사각형 안에 있는지

    판변하는 프로그램을 작성하라.

     

    import java.util.Scanner;
    
    public class practice7 {
    
        public void rect(int x, int y){
            if(x <= 200 && x >= 100 && y >= 100 && y <= 200){
                System.out.println(String.format("(%d, %d)는 사각형 안에 있습니다.", x, y));
            }
        }
        public static void main(String args[]){
            System.out.print("점 (x, y)의 좌표를 입력하시오 >> ");
            Scanner sc = new Scanner(System.in);
            int x = sc.nextInt();
            int y = sc.nextInt();
            
            practice7 p7 = new practice7();
            p7.rect(x, y);
            sc.close();
        }
    }
    

     

    -> 100 <= x <= 200, 100 <= y <= 200 이 두 조건을 동시에 만족하는지 체크한다.

     


     

    8. 직사각형을 구성하는 두 점 (x1, y1), (x2, y2)을 입력받아 (100, 100), (200, 200)의 두 점으로 이루어진

    직사각형과 충돌하는지 판별하는 프로그램을 작성하라.

     

    import java.util.Scanner;
    
    public class practice8 {
    
        public static boolean inRect(int x, int y, int rectx1, int recty1, int rectx2, int recty2){
            if((x >= rectx1 && x <= rectx2) && (y >= recty1 && y <= recty2)){
                return true;
            }else return false;
        }
        public static void main(String args[]){
            System.out.print("(x1, y1), (x2, y2)를 입력하시오 >> ");
            Scanner sc = new Scanner(System.in);
            int x1 = sc.nextInt();
            int y1 = sc.nextInt();
            int x2 = sc.nextInt();
            int y2 = sc.nextInt();
            boolean isInRect = inRect(100, 200, x1, y1, x2, y2);
            if(isInRect){
                System.out.println(String.format("(%d, %d), (%d, %d)는 (100, 100), (200, 200) 직사사각형과 충돌합니다.", x1, y1, x2, y2));
            }else{
                System.out.println(String.format("(%d, %d), (%d, %d)는 (100, 100), (200, 200) 직사사각형과 충돌하지 않습니다.", x1, y1, x2, y2));
            }
        }
    }
    

     

    -> 100이 입력한 x1과 x2 내부에 있는지, 200이 입력한 x2, y2 내부에 있는지 판단.

     


     

    9. 원의 중심을 나타내는 한 점과 반지름을 실수 값으로 입력받아라. 그리고 실수 값으로 다른 점 (x, y)를 입력받아

    이 점이 원의 내부에 있는지 판변하려 출력하라.

     

    import java.util.Scanner;
    
    public class practice9 {
    
        public void inCircle(int x, int y, int circleX, int circleY, double circleR){
            double distance = Math.sqrt((circleX - x) * (circleX - x) + (circleY - y) * (circleY - y));
            if(distance <= circleR){
                System.out.println(String.format("점 (%d, %d)는 원 안에 있다.", x, y));
            }else{
                System.out.println(String.format("점 (%d, %d)는 원 안에 없다.", x, y));
            }
        }
        public static void main(String args[]){
            System.out.print("원의 중심과 반지름 입력 >> ");
            Scanner sc = new Scanner(System.in);
            int circle_x = sc.nextInt();
            int circle_y = sc.nextInt();
            double radius = sc.nextDouble();
    
            System.out.print("점 입력 >> ");
            int x = sc.nextInt();
            int y = sc.nextInt();
    
            practice9 p9 = new practice9();
            p9.inCircle(x, y, circle_x, circle_y, radius);
        }
    }
    

     

    -> 원의 중심과 점 사이의 거리가 원의 반지름보다 크면 원 밖에 있는 것이고 같거나 작으면 점은 원 안에 있다는 뜻이다.

     


     

    10. 원의 중심을 나타내는 한 점과 반지름을 입력받는다. 두 개의 원을 입력받고 두 원이 서로 겹치는지 판단하려 출력하라.

     

    import java.util.Scanner;
    
    public class practive10 {
    
        public static boolean Circle(int c1x, int c1y, double c1r, int c2x, int c2y, double c2r){
            double distance = Math.sqrt((c1x - c2x) * (c1x - c2x) + (c1y - c2y) * (c1y - c2y));
            if ((c2r + c1r) >= distance){
                return true;
            }else{
                return false;
            }
        }
        public static void main(String args[]){
            System.out.print("첫번째 원의 중심과 반지름 입력 >> ");
            Scanner sc = new Scanner(System.in);
            int c1x = sc.nextInt();
            int c1y = sc.nextInt();
            double c1r = sc.nextInt();
            System.out.print("두번째 원의 중심과 반지름 입력 >> ");
            int c2x = sc.nextInt();
            int c2y = sc.nextInt();
            double c2r = sc.nextInt();
    
            boolean circle = Circle(c1x, c1y, c1r, c2x, c2y, c2r);
            if(circle){
                System.out.println("두 원은 서로 겹친다.");
            }else{
                System.out.println("두 원은 겹치지 않는다.");
            }
            sc.close();
        }
    }
    

     

    -> 원의 중심들 사이의 거리를 구한 후, 두 원의 반지름을 더한 값과 같거나 크면 원은 겹친다.

    그렇지 않으면 겹치지 않는다.

     


     

    11. 숫자를 입력받아 3~5는 "봄", 6~8은 "여름", 9~11은 "가을". 12, 1, 2의 경우엔 "겨울"을, 그 외의 숫자를 입력한 경우

    "잘못입력"을 출력하는 프로그램을 작성하라.

     

    import java.util.Scanner;
    
    public class practice11 {
        public static void main(String[] args) {
            System.out.print("답을 입력하세요(1~12) >> ");
            Scanner sc = new Scanner(System.in);
            int num = sc.nextInt();
    
            if(num >= 3 && num <= 5){
                System.out.println("봄");
            }else if(num >= 6 && num <= 8){
                System.out.println("여름");
            }else if(num >= 9 && num <= 11){
                System.out.println("가을");
            }else if(num == 1 || num == 2 || num == 12){
                System.out.println("겨울");
            }else{
                System.out.println("잘못입력");
            }
            sc.close();
        }
    }
    

     

    -> if-else 문 사용, switch 문도 가능.

     


     

    12. 사칙 연산을 입력받아 계산하는 프로그램을 작성하고자 한다. 연산자는 +, -, *, /의 네 가지로 하고 피연산자는 모두 실수로 한다.

    피연산자와 연산자는 실행 사례와 같이 빈 칸으로 분리하여 입력한다.(next()사용) 0으로 나누기 시 "0으로 나눌 수 없습니다." 출력하고

    종료한다.

     

    import java.util.Scanner;
    
    public class practice12 {
    
        public static void calc(int num1, String s, int num2){
            int result = 0;
            switch(s){
                case "+":
                result = num1 + num2;
                System.out.println(String.format("%d%s%d의 계산 결과는 %d", num1, s, num2, result));
                break;
                case "-":
                result = num1 - num2;
                System.out.println(String.format("%d%s%d의 계산 결과는 %d", num1, s, num2, result));
                break;
                case "*":
                result = num1 * num2;
                System.out.println(String.format("%d%s%d의 계산 결과는 %d", num1, s, num2, result));
                break;
                case "/":
                if(num2 == 0){
                    System.out.println("0으로 나눌 수 없습니다.");
                }
                result = num1 / num2;
                System.out.println(String.format("%d%s%d의 계산 결과는 %d", num1, s, num2, result));
                break;
                default:
                System.out.println("연산자를 잘못 입력했습니다.");
            }
        }
        public static void main(String[] args) {
            System.out.print("연산 >> ");
            Scanner sc = new Scanner(System.in);
            int num1 = sc.nextInt();
            String s = sc.next();
            int num2 = sc.nextInt();
            
            calc(num1, s, num2);
            sc.close();
        }
    }
    

    'JAVA' 카테고리의 다른 글

    03. 반복문과 배열 그리고 예외 처리  (0) 2021.01.22
    [명품 JAVA Programming] open challenge 2장  (0) 2021.01.21
    02. 자바 기본 프로그래밍  (0) 2021.01.21

    댓글

Designed by Tistory.