본문 바로가기
Programming/JAVA

자바의 기본 구조

by 안녕주 2020. 9. 2.

명품자바프로그래밍 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

댓글