육식하는야채의 개발일지
article thumbnail

6. 2자리 정수를 입력받아서  369게임에서 3, 6, 9가 몇 번 나오느냐에 따라 박수치는 수를 정하는 프로그램

3,6,9가 십의자리나 일의자리 중에 하나만 있으면 박수 짝을 출력
2개가 있으면 박수 짝짝을 출력
package Actual_problem2;

import java.util.Scanner;

public class TreeSixNineGame {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.print("1~99 사이의 정수를 입력하세요 >>");
        int num = in.nextInt();
        int tens, ones; //
        int cnt = 0; // 3,6,9가 나온 갯수

        tens = num / 10; // 10의자리
        ones = num % 10; // 1의자리

        if (tens == 3 || tens == 6 || tens == 9) {
            cnt++; // 십의자리수 중에 369가 있으면 +1
        }
        if (ones == 3 || ones == 6 || ones == 9) {
            cnt++; // 일의 자리수 중에 369가 있으면 +1
        }
        if (cnt == 0) { // 369가 없는 경우
            System.out.println(num);
        } else { // 369가 있는 경우
            System.out.print("박수");
            if (cnt == 1) { // 369가 하나만 있는 경우
                System.out.println("짝");
            } else { // 2개가 있는 경우
                System.out.println("짝짝");
            }
        }
        in.close();
    }
}

 

7.  2차원 좌표를 입력받고 좌표가 (100,100) 과 (200,200)으로 이루어진 사각형 안에 포함되는지를 판별하는 프로그램

x좌표 y좌표를 입력받는다.
x좌표가 100보다 크거나 같고 200보다 작거나 같고 
y좌표가 100보다 크거나 같고 200보다 작거나 같아야한다.
package Actual_problem2;

import java.util.Scanner;

public class InTheBox {
    public static void main(String[] args) {
        System.out.print("점(x,y)의 좌표를 입력하시오>> ");
        Scanner in = new Scanner(System.in);
        int x = in.nextInt();
        int y = in.nextInt();

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

 

8. 직사각형을 구성하는 2차원 좌표를 입력받고 좌표가 (100,100) 과 (200,200)으로 이루어진 사각형과 충돌하는지를 판별하는 프로그램

- 다음 메소드를 활용할 것

 public static boolean inRect(int x, int y, int rectx1, int recty1, int rectx2, int recty2)
	{
		return x >= rectx1 && x <= rectx2 && y >= recty1 && y <= recty2;
	}
사각형 좌표 (100=rectx1, 100=recty1)과 (200=rectx1, 200=recty2)일 때
입력받은 x좌표가 100보다 크거나 같고 200보다 작거나 같으며
입력받은 y좌표가 100보다 크거나 같고 200보다 같거나 작으면 true를 반환하는 메소드이다.
거짓이면 false를 반환한다.
package Actual_problem2;

import java.util.Scanner;

public class InTheBox2 {
    public static boolean inRect(int x, int y, int rectx1, int recty1, int rectx2, int recty2)
	{
		return x >= rectx1 && x <= rectx2 && y >= recty1 && y <= recty2;
	}
    public static void main(String[] args) {
Scanner in = new Scanner(System.in);
		System.out.print("두점 (x,y)의 좌표를 입력하시오>>");
		int x1 = in.nextInt();
		int y1 = in.nextInt();
		int x2 = in.nextInt();
		int y2 = in.nextInt();
		if(inRect(x1,y1,100,100,200,200)||inRect(x2,y2,100,100,200,200))
			System.out.print("충돌합니다"); // true이면 실행
		else
			System.out.print("충돌 안 합니다."); // false면 실행
    }
}

 

9. 원의 중심지 좌표와 반지름을 입력하고 다른 좌표를 입력했을 때 원 안에 존재하는지를 판별하는 프로그램

좌표사이의 거리를 측정하는 방법

package Actual_problem2;

import java.util.Scanner;

public class CenterOfCircle {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.print("원의 중심과 반지름 입력 >>> ");
        int rx = in.nextInt();
        int ry = in.nextInt();
        double r = in.nextDouble();
        System.out.print("점 입력 >> ");
        int x = in.nextInt();
        int y = in.nextInt();
        double dis = Math.sqrt((((rx-x)*(rx-x))+((ry-y)*(ry-y)))); 
        // 원의 중심과 좌표사이의 거리를 구하는 공식
        if(dis<=r) // 거리가 반지름보다 짧을 경우
            System.out.print("점 (" + x + "," + y + ")는 원 안에 있다.");
        else // 거리가 반지름보다 길 경우
            System.out.print("점 (" + x + "," + y + ")는 원 안에 없다.");
    }
}

 

10. 원의 중심을 나타내는 좌표와 반지름을 입력받는다. 두 원을 입력받고 두 원이 서로 겹치는지 판단하는 프로그램

두 원의 중심점 좌표와 반지름을 입력받는다.
두 원의 중심점 좌표사이의 거리를 계산한다.
두 원의 반지름의 합을 계산한다.
좌표의 거리가 반지름의 합보다 크면 원은 겹치지 않는다.
반지름의 합이 더 크면 두 원은 겹친다.
package Actual_problem2;

import java.util.Scanner;

public class OverLappingCircles {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.print("첫 번째 원의 중심점과 반지름을 입력하세요 >> ");
        int rx1 = in.nextInt();
        int ry1 = in.nextInt();
        double radius1 = in.nextDouble();
        System.out.print("두 번째 원의 중심점과 반지름을 입력하세요 >> ");
        int rx2 = in.nextInt();
        int ry2 = in.nextInt();
        double radius2 = in.nextDouble();
        double radiusPlus = radius1 + radius2; // 두 원의 반지름의 합
        double dis = Math.sqrt((((rx1-rx2)*(rx1-rx2))+((ry1-ry2)*(ry1-ry2)))); // 두 원의 중심간의 거리

        // 두 원의 중심사이의 거리보다 반지름의 합이 더 크면 겹친다.
        if (dis <= radiusPlus) {
            System.out.println("두 원은 서로 겹친다.");
        } else { // 반지름의 합이 더 작으면
            System.out.println("두 원은 서로 겹치지 않는다.");
        }
        in.close();
    }
}

 

11. 숫자를 입력받아 3~5는 봄, 6~8는 여름, 9~11은 가을, 12~2는 겨울을 출력 그 외의 숫자를 입력받으면 "잘못출력"을 출력한다.

1) if-else문으로 작성

package Actual_problem2;

import java.util.Scanner;

public class SeasonWithIfElse {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.print("달을 입력하시오(1~12) >>> ");
        int month = in.nextInt();

        // 3보다 크거나 같고 5보다 작거나 같은 수
        if ((month >= 3) && (month <= 5)) {
            System.out.println("봄");
        } else if ((month >= 6) && (month <= 8)) {
            System.out.println("여름");
        } else if ((month >= 9) && (month <= 11)) {
            System.out.println("가을");
        } else if ((month >= 2) && (month <= 12)) {
            System.out.println("겨울");
        } else {
            System.out.println("잘못입력");
        }
        in.close();
    }
}

2) switch문으로 작성

package Actual_problem2;

import java.util.Scanner;

public class SeasonWithIfElse {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.print("달을 입력하시오(1~12) >>> ");
        int month = in.nextInt();

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

 

12. 사칙 연산(+, -, *, /)를 입력받아 계산하고 피연산자는 모두 실수. 0으로 나누기 시 "0으로 나눌 수 없습니다."를 출력하는 프로그램

1) if-else문으로

package Actual_problem2;

import java.util.Scanner;

public class Calculator {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.print("연산 >> ");
        double a = in.nextDouble();
        String cal = in.next();
        double b = in.nextDouble();

        double sum;

        if (cal.equals("+")) {
            sum = a + b;
            System.out.println(a + "+" + b + "의 계산 결과는" + " " + sum);
        } else if (cal.equals("-")) {
            sum = a - b;
            System.out.println(a + "-" + b + "의 계산 결과는" + " " + sum);
        }else if (cal.equals("*")) {
            sum = a * b;
            System.out.println(a + "*" + b + "의 계산 결과는" + " " + sum);
        }else if (cal.equals("/")) {
            if (a == 0 || b == 0) {
                System.out.println("0으로 나누기 시 0으로 나눌 수 없습니다.");
            } else {
            sum = a / b;
            System.out.println(a + "/" + b + "의 계산 결과는" + " " + sum);
            }
        }
        in.close();
    }
}

2) switch문으로 작성

package Actual_problem2;

import java.util.Scanner;

public class CalculatorSwitch {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.print("연산 >> ");
        double a = in.nextDouble();
        String cal = in.next();
        double b = in.nextDouble();

        double sum;

        switch (cal) {
            case "+" -> {
                sum = a + b;
                System.out.println(a + "+" + b + "의 계산 결과는" + " " + sum);
            }
            case "-" -> {
                sum = a - b;
                System.out.println(a + "-" + b + "의 계산 결과는" + " " + sum);
            }
            case "*" -> {
                sum = a * b;
                System.out.println(a + "*" + b + "의 계산 결과는" + " " + sum);
            }
            case "/" -> {
                if (a == 0 || b == 0) {
                    System.out.println("0으로 나누기 시 0으로 나눌 수 없습니다.");
                } else {
                    sum = a / b;
                    System.out.println(a + "/" + b + "의 계산 결과는" + " " + sum);
                }
            }
        }
        in.close();
    }
}

'Java > 명품JAVA' 카테고리의 다른 글

명품JAVA Programming 2장 실습문제풀이 (1~5번)  (0) 2023.05.02
profile

육식하는야채의 개발일지

@육식하는야채

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!