반응형
7. 2차원 평면에서 직사각형은 왼쪽 상단 모서리와 오른쪽 하단 모서리의 두 점으로 표현한다. (100, 100)과 (200, 200)의 두 점으로 이루어진 사각형이 있을 때, Scanner를 이용하여 정수 x와 y 값을 입력받고 점 (x, y)가 이 직사각형 안에 있는지를 판별하는 프로그램을 작성하라. |
package chapter2;
import java.util.Scanner;
public class chapter2_7 {
public static void main(String args[]) {
Scanner scanner = new Scanner(System.in);
System.out.print("점 (x,y)의 좌표를 입력하시오>>");
int x = scanner.nextInt();
int y = scanner.nextInt();
if(100 < x && x < 200 && 100 < y && y < 200)
System.out.println("(" + x + " ," + y + ")는 사각형 안에 있습니다.");
scanner.close();
}
}
8. 2차원 평면에서 직사각형은 문제 7번처럼 두 점으로 표현된다. 키보드로부터 직사각형을 구성하는 두 점 (x1, y1), (x2, y2)를 입력받아 (100, 100), (200, 200)의 두 점으로 이루어진 직사각형과 충돌하는지 판별하는 프로그램을 작성하라. |
package chapter2;
import java.util.Scanner;
public class chapter2_8 {
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[]) {
Scanner scanner = new Scanner(System.in);
System.out.print("첫 번째 점의 좌표를 입력하시오>>");
int x1 = scanner.nextInt();
int y1 = scanner.nextInt();
System.out.print("두 번째 점의 좌표를 입력하시오>>");
int x2 = scanner.nextInt();
int y2 = scanner.nextInt();
if(inRect(x1, y1, 100, 100, 200, 200) && inRect(x2, y2, 100, 100, 200, 200))
System.out.println("사각형이 겹칩니다.");
else
System.out.println("사각형이 겹치지 않습니다.");
scanner.close();
}
}
두 점만 가지고 직사각형을 어떻게 특정해야 할지 모르겠다. 입력받은 두 점이 (100,100)을 왼쪽 아래 꼭짓점, (200, 200)을 오른쪽 위 꼭짓점으로 하는 직사각형 내부에 포함되는지를 판단하는 정도만 했다.
9. 원의 중심을 나타내는 한 점과 반지름을 실수 값으로 입력받아라. 그리고 실수 값으로 다른 점 (x, y)를 입력받아 이 점이 원의 내부에 있는지 판별하여 출력하라. |
package chapter2;
import java.util.Scanner;
public class chapter2_9 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("원의 중심과 반지름 입력>>");
double cx = scanner.nextDouble();
double cy = scanner.nextDouble();
double r = scanner.nextDouble();
System.out.print("점 입력>>");
double x = scanner.nextDouble();
double y = scanner.nextDouble();
if((x-cx)*(x-cx) + (y-cy)*(y-cy) <= r*r)
System.out.println("점 (" + x + " " + y + ")는 원 안에 있다.");
else
System.out.println("점 (" + x + " " + y + ")는 원 밖에 있다.");
scanner.close();
}
}
10. 원의 정보를 받기 위해 키보드로부터 원의 중심을 나타내는 한 점과 반지름을 입력받는다. 두 개의 원을 입력받고 두 원이 서로 겹치는지 판단하여 출력하라. |
package chapter2;
import java.util.Scanner;
public class chapter2_10 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("첫번째 원의 중심과 반지름 입력>>");
double cx1 = scanner.nextDouble();
double cy1 = scanner.nextDouble();
double r1 = scanner.nextDouble();
System.out.print("두번째 원의 중심과 반지름 입력>>");
double cx2 = scanner.nextDouble();
double cy2 = scanner.nextDouble();
double r2 = scanner.nextDouble();
if((cx1-cx2)*(cx1-cx2) + (cy1-cy2)*(cy1-cy2) <= (r1-r2)*(r1-r2))
System.out.println("두 원은 서로 겹친다.");
else
System.out.println("두 원은 서로 겹친다.");
scanner.close();
}
}
11. 숫자를 입력받아 3~5는 "봄", 6~8은 "여름", 9~11은 "가을", 12,1,2의 경우 "겨울"을, 그 외 숫자를 입력한 경우 "잘못입력"을 출력하는 프로그램을 작성하라. |
package chapter2;
import java.util.Scanner;
public class chapter2_11 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("달을 입력하세요(1~12)>>");
int season = scanner.nextInt();
switch(season) {
case 3:
case 4:
case 5:
System.out.println("봄");
break;
case 6:
case 7:
case 8:
System.out.println("여릉");
break;
case 9:
case 10:
case 11:
System.out.println("가을");
break;
case 12:
case 1:
case 2:
System.out.println("겨울");
break;
default:
System.out.println("잘못 입력");
break;
}
scanner.close();
}
}
swtich문만 이용했다.
12. 사칙 연산을 입력받아 계산하는 프로그램을 작성하고자 한다. 연산자는 +, -, *, /의 네 가지로 하고 피연산자는 모두 실수로 한다. 피연산자와 연산자는 실행 사례와 같이 빈 칸으로 분리하여 입력한다. 0으로 나누기 시 "0으로 나눌 수 없습니다."를 출력하고 종료한다. |
package chapter2;
import java.util.Scanner;
public class chapter2_12 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("연산>>");
double n1 = scanner.nextDouble();
String op = scanner.next();
double n2 = scanner.nextDouble();
if(op.equals("+"))
System.out.println(n1 + op + n2 + "의 계산결과는 " + (n1 + n2));
else if(op.equals("-"))
System.out.println(n1 + op + n2 + "의 계산결과는 " + (n1 - n2));
else if(op.equals("*"))
System.out.println(n1 + op + n2 + "의 계산결과는 " + (n1 * n2));
else if(op.equals("/"))
if(n2 == 0) {
System.out.println("0으로 나눌 수 없습니다.");
System.exit(0); //프로그램 종료
}
System.out.println(n1 + op + n2 + "의 계산결과는 " + (n1 / n2));
scanner.close();
}
}
if-else문만 이용했다.
반응형
'프로그래밍 > JAVA' 카테고리의 다른 글
<명품 JAVA Programming> - Chapter4 연습문제(1, 2, 3, 4, 5, 6) (0) | 2020.10.26 |
---|---|
<명품 JAVA Programming> - Chapter3 연습문제(13, 14, 15, 16) (0) | 2020.10.25 |
<명품 JAVA Programming> - Chapter3 연습문제(7, 8, 9, 10, 11, 12) (0) | 2020.10.25 |
<명품 JAVA Programming> - Chapter3 연습문제(1, 2, 3, 4, 5, 6) (0) | 2020.10.25 |
<명품 JAVA Programming> - Chapter2 연습문제(1, 2, 3, 4, 5, 6) (0) | 2020.10.24 |