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 |
---|