명품자바프로그래밍 Chapter1,2_Lab01
실습2 | 화면에 자신의 이름, 나이, 학과 출력하기
화면에 자신의 이름,학과,학번 등의 정보를 출력하는 자바 응용프로그램 만들기
public class MyInfoApp {
public static void main(String[] args) {
//화면에 자신의 이름, 나이, 학과 출력하기
System.out.println("이름: 안 현 주");
System.out.println("학과: 컴퓨터과학과");
System.out.println("학번: 19@@@@@");
}
}
실습4 | 십의 자리와 일의 자리 일치여부
Scanner 클래스를 이용하여 2자리의 정수(10~99)를 입력받고, 십의 자리와 일의 자리가 같은지 판별하여 출력
-Hint : / 와 % 연산자 활용
import java.util.Scanner;
public class Lab1_2 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("2자리수 정수 입력(10~99)>>");
int num = scan.nextInt(); //정수 읽기
int num1 = num / 10; //입력받은 수의 10의 자리수를 num1에 저장
int num2 = num % 10; //입력받은 수의 1의 자리수를 num2에 저장
if (num1 == num2) { //10의 자리의 수와 1의 자리의 수가 같다면
System.out.println("Yes! 10의 자리와 1의 자리가 같습니다.");
}
else { //같지 않다면
System.out.println("No! 10의 자리와 1의 자리가 다릅니다.");
}
scan.close();
}
}
실습6 | 정수 3개 입력 받고 중간값 구하기
Scanner 클래스로 정수 3개를 입력받고 3개의 숫자 중 중간 크기의 수를 출력 (*평균값 아님)
import java.util.Scanner;
public class Lab1_4 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("정수 3개 입력>>");
int num1 = scan.nextInt();
int num2 = scan.nextInt();
int num3 = scan.nextInt();
if (num1 >= num2) {
if(num2 >= num3)
System.out.println("중간 값은 "+ num2); //123
else {
if (num1 >= num3)
System.out.println("중간 값은 "+ num3); //132
else
System.out.println("중간 값은 "+ num1); //312
}
}
else {
if (num1 >= num3)
System.out.println("중간 값은 "+ num1); //213
else {
if (num2 >= num3)
System.out.println("중간 값은 "+ num3); //231
else
System.out.println("중간 값은 "+ num2); //321
}
}
scan.close();
}
}
실습8 | 369게임 만들기
import java.util.Scanner;
public class Lab1_6 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("1~99 사이의 정수를 입력하시오>>");
int num = scan.nextInt();
int num1 = num / 10;
int num2 = num % 10;
if ((num1 == 3) || (num1 == 6) || (num1 == 9)) {
if ((num2 == 3) || (num2 == 6) || (num2 == 9))
System.out.println("박수짝짝");
else if ((num2 !=3) && (num2 !=6) && (num2 !=9))
System.out.println("박수짝");
}
else if ((num1 !=3) && (num1 !=6) && (num1 !=9)) {
if ((num2 == 3) || (num2 == 6) || (num2 == 9))
System.out.println("박수짝");
else if ((num2 !=3) && (num2 !=6) && (num2 !=9))
System.out.println("박수없음");
}
scan.close();
}
}
실습10 | 직사각형의 충돌여부
직사각형의 (x1,y1),(x2,y2)를 입력받는다. (100,100),(200,200)의 두 점으로 이루어진 정사각형과 충돌하는지 판별
- Hint : 아래의 주어진 함수를 사용
import java.util.Scanner;
public class Lab1_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 scan = new Scanner(System.in);
System.out.print("x1, y1 입력>>");
int x1 = scan.nextInt();
int y1 = scan.nextInt();
System.out.print("x2, y2 입력>>");
int x2 = scan.nextInt();
int y2 = scan.nextInt();
//앞으로의 설명에 있어서 아래와 같이 요약해 부를예정
//정사각형 == 주어진 (100,100), (200,200)으로 만들어진 사각형
//직사각형 == 입력받아 그릴 사각형
if (inRect(x1,y1,100, 100, 200, 200) && inRect(x2, y2, 100, 100, 200, 200) ) //정사각형 안에 직사각형이 있음
System.out.print("충돌 없음");
else if (!(inRect(x1,y1,100, 100, 200, 200) || inRect(x1,y2,100, 100, 200, 200) || inRect(x2,y1,100, 100, 200, 200) || inRect(x2,y2,100, 100, 200, 200)))
//점이 모두 정사각형의 밖에 있는 경우
if ((x1<= 100 && x2>=100 && x2<=200) && ((y1<=100 && y2>=200) || (y1>=200 && y2<=100))) // 점은 다 정사각형 밖에 있지만 직사각형이 정사각형의 왼쪽을 관통하는 경우
System.out.print("충돌 발생");
else if((x1>=100 && x1<=200 && x2>=200) && ((y1<=100 && y2>=200)||(y1>=200 && y2<=200))) // 점은 다 정사각형 밖에 있지만 직사각형이 정사각형의 오른쪽을 관통하는 경우
System.out.print("충돌 발생");
else if((x1<=100 && x2>=200)&&((y1<=100 && y2>=100 && y2<=200)||(y1>=100 && y1<=200 && y2<=200))) // 점은 다 정사각형 밖에 있지만 직사각형이 정사각형의 아래쪽을 관통하는 경우
System.out.print("충돌 발생");
else if((x1<=100 && x2>=200)&& ((y1>=100 && y1<=200 && y2>=200)||(y1>=200 && y2>=100 && y2<=200))) //점은 다 정사각형 밖에 있지만 직사각형이 정사각형의 위쪽을 관통하는 경우
System.out.print("충돌 발생");
else // 직사각형의 안에 정사각형이 있는 경우
System.out.print("충돌 없음");
else //직사각형의 한 점이 정사각형 안에 존재 == 무조건 충돌
System.out.print("충돌 발생");
scan.close();
}
}
컴퓨터 내에서의 그래픽 좌표는 좌측상단이 (0,0), 우측으로 x축 증가, 아래쪽으로 y축 증가라고 한다...
여태까지 삽질했다.... 조금 수정했다. 근데 똑같은거 같다.
import java.util.Scanner;
public class Lab1_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;
}
//컴퓨터 내에서의 그래픽 좌표는 좌측 상단이 (0,0)의 좌표를 가지게 되어 우측으로 x 좌표가 증가하고, 아래쪽으로 y 좌표가 증가하는 방향을 가지게 된다.
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("x1, y1 입력>>");
int x1 = scan.nextInt(); //정수 입력받기
int y1 = scan.nextInt();
System.out.print("x2, y2 입력>>");
int x2 = scan.nextInt();
int y2 = scan.nextInt();
//입력받은 두 점을 기반으로
//앞으로 길에 반복해서 말하지 않고 아래와 같이 말을 바꾸어 설명.
// 직사각형 = 내가 좌표를 입력받아 그릴 사각형
// 정사각형 = 주어진 (100,100),(200,200)으로 그린 사각형
if (inRect(x1,y1,100, 100, 200, 200) && inRect(x2, y2, 100, 100, 200, 200)) //정사각형 안에 직사각형이 있는 결루
System.out.print("충돌 없음");
else if (!(inRect(x1,y1,100, 100, 200, 200) || inRect(x1,y2,100, 100, 200, 200) || inRect(x2,y1,100, 100, 200, 200) || inRect(x2,y2,100, 100, 200, 200)))
//점이 모두 정사각형의 밖에 있는 경우
if ((x1<=100 && x2>=100 && x2<=200) && ((y1<=100 && y2>=200)||(y1>=200 && y2<=100)))
System.out.print("충돌 발생"); //직사각형의 점은 다 정사각형의 외부에 있지만 정사각형의 왼쪽을 분할한다. (50,50)(150,300)와 (50,300)(150,50)같은 경우
else if ((x1>=100 && x1<=200 && x2>=200) && ((y1<=100 && y2>=200)||(y1>=200 && y2<=100)))
System.out.print("충돌 발생"); //직사각형의 점은 다 정사각형의 외부에 있지만 정사각형의 오른쪽을 분할한다. (150,50)(300,300)와(150,300)(300,50)같은 경우
else if ((x1<=100 && x2>=200) && ((y1>=100 && y1<=200 && y2>=200)||(y1>=200 && y2>=100 && y2<=200)))
System.out.print("충돌 발생"); //직사각형의 점은 다 정사각형의 외부에 있지만 정사각형의 아래쪽을 분할한다. (50,150)(300,300)와 (50,300)(300,150)같은 경우
else if ((x1<=100 && x2>=200) && ((y1<=100 && y2>=100 && y2<=200)||(y1>=100 && y1<=200 && y2<=100)))
System.out.print("충돌 발생"); //직사각형의 점은 다 정사각형의 외부에 있지만 정사각형의 위쪽을 분할한다. (50,50)(300,150)와 (50,150)(300,50)같은 경우
else
System.out.print("충돌 없음"); //직사각형 안에 정사각형이 있는 경우
else //직사각형의 한 점이 정사각형 안에 존재 == 무조건 충돌
System.out.print("충돌 발생");
scan.close();
}
}
실습12 | 원의 충돌 여부
두개의 원의 중심좌표, 반지름을 입력 받아 두원이 서로 겹치는지 판단하여 출력한다.
import java.util.Scanner;
public class Lab1_10 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("원의 중심 x1, y1, 반지름 radius1 >> ");
int x1 = scan.nextInt();
int y1 = scan.nextInt();
int r1 = scan.nextInt();
System.out.print("원의 중심 x1, y1, 반지름 radius1 >> ");
int x2 = scan.nextInt();
int y2 = scan.nextInt();
int r2 = scan.nextInt();
double distance = Math.sqrt(Math.pow((x2-x1),2) + Math.pow((y2-y1), 2));
if ((r1+r2)>=distance) {
System.out.println("두 원은 서로 겹친다.");
}
else
System.out.println("두 원은 서로 겹치지 않는다.");
scan.close();
}
}
'Programming > JAVA' 카테고리의 다른 글
패키지 개념과 자바 기본 패키지 (0) | 2020.10.16 |
---|---|
상속 (0) | 2020.10.16 |
클래스와 객체 (0) | 2020.10.16 |
반복문과 배열 그리고 예외 처리 (0) | 2020.09.08 |
[Java] print, printf, println의 차이 (0) | 2020.09.03 |
댓글