쌓고 쌓다

[Java] 명품 자바 프로그래밍 2장 실습 문제 풀이 본문

프로그래밍/java

[Java] 명품 자바 프로그래밍 2장 실습 문제 풀이

승민아 2022. 4. 7. 21:53

1번 문제

package extest;

import java.util.Scanner;

public class exstudy {

	public static void main(String[] args) {
		
		Scanner scanner = new Scanner(System.in);
		System.out.print("원화를 입력하세요(단위 원)>>");
		int won = scanner.nextInt();
		double res = won/1100;
		System.out.println(won+"원은 "+"$"+res+"입니다.");
		

	}

}

 

2번 문제

package extest;
import java.util.Scanner;
public class exstudy {

	public static void main(String[] args) {
		
		Scanner scanner = new Scanner(System.in);
		System.out.print("2자리수 정수 입력(10~99)>>");
		int num = scanner.nextInt();
		if(num%10==num/10)
			System.out.print("YES");
		else
			System.out.print("NO");
		
	}

}

 

3번 문제

package extest;
import java.util.Scanner;
public class exstudy {

	public static void main(String[] args) {
		
		Scanner scanner = new Scanner(System.in);
		System.out.print("금액을 입력하세요>>");
		int num = scanner.nextInt();
		System.out.println("오만원권"+num/50000+"매");
		num-=50000*(num/50000);
		System.out.println("만원권"+num/10000+"매");
		num-=10000*(num/10000);
		System.out.println("천원권"+num/1000+"매");
		num-=1000*(num/1000);
		System.out.println("백원"+num/100+"개");
		num-=100*(num/100);
		System.out.println("오십원"+num/50+"개");
		num-=50*(num/50);
		System.out.println("십원"+num/10+"개");
		num-=10*(num/10);
		System.out.println("일원"+num+"개");
	}

}

 

4번 문제

package extest;
import java.util.Scanner;
public class exstudy {

	public static void main(String[] args) {
		
		int arr[] = new int[3];
		Scanner scanner = new Scanner(System.in);
		System.out.print("정수 3개 입력>>");
		for(int i=0;i<3;i++)
			arr[i]=scanner.nextInt();
		System.out.print("중간 값은 ");
		if(arr[0]<arr[1]&&arr[1]<arr[2]
				||arr[2]<arr[1]&&arr[1]<arr[0])
			System.out.print(arr[1]);
		else if(arr[0]<arr[2]&&arr[2]<arr[1]
				||arr[1]<arr[2]&&arr[2]<arr[0])
			System.out.print(arr[2]);
		else
			System.out.print(arr[0]);
	}

}

아래 문장만 이해하면 문제 4번은 이해가 갈 겁니다.

arr[1]번째가 중간값이 되는 경우는

arr[0]<arr[1]<arr[2]

arr[2]<arr[1]<arr[0] 입니다.

중간은 arr[1]로 고정이고 arr[2]와 arr[0]의 경우(누가 작을 때도 클 때도 있으니)를 따져주면 됩니다.

 

5번 문제

package extest;
import java.util.Scanner;
public class exstudy {

	public static void main(String[] args) {
		
		int arr[] = new int[3];
		Scanner scanner = new Scanner(System.in);
		System.out.print("정수 3개 입력(삼각형)>>");
		for(int i=0;i<3;i++)
			arr[i]=scanner.nextInt();
		//두 변의 합이 다른 한 변의 합보다 커야함
		if(arr[0]<arr[1]+arr[2]
				||arr[1]<arr[0]+arr[2]
						||arr[2]<arr[0]+arr[1])
			System.out.print("삼각형이 됩니다");
		else
			System.out.print("삼각형이 안됩니다.");
		
	}
}

 

6번 문제

package extest;
import java.util.Scanner;
public class exstudy {

	public static void main(String[] args) {
		
		Scanner scanner = new Scanner(System.in);
		System.out.print("1~99 사이의 정수를 입력하시오>>");
		int num = scanner.nextInt();
		int cnt=0;
		while(num>0)
		{
			if(num%10==3||num%10==6||num%10==9)
				cnt++;
			num/=10;
		}
		if(cnt==1)
			System.out.print("박수짝");
		else if(cnt==2)
			System.out.print("박수짝짝");
		else
			System.out.print("박수 못쳐");
	}
}

 

7번 문제

package extest;
import java.util.Scanner;
public class exstudy {

	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(x>=100&&x<=200&&y>=100&&y<=200)
			System.out.print("("+x+","+y+")"+"는 사각형 안에 있습니다.");
		else
			System.out.print("사각형 안에 없어요");
		
	}
}

 

8번 문제

package extest;
import java.util.Scanner;
public class exstudy {

	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;
		return false;
	}
	
	
	public static void main(String[] args) {
		
		Scanner scanner = new Scanner(System.in);
		System.out.print("두점 (x,y)의 좌표를 입력하시오>>");
		int x1 = scanner.nextInt();
		int y1 = scanner.nextInt();
		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.print("충동합니다");
		else
			System.out.print("충돌 안 합니다.");
	}
}

(x1,y1)과 (x2,y2) 중 어느 한 점이라도 저 사각형 안에 들어간다면 충동하겠죠

 

9번 문제

package extest;
import java.util.Scanner;
public class exstudy {
	
	public static void main(String[] args) {
		
		Scanner scanner = new Scanner(System.in);
		System.out.print("원의 중심과 반지름 입력:");
		int rx = scanner.nextInt();
		int ry = scanner.nextInt();
		double r = scanner.nextDouble();
		System.out.print("점 입력>>");
		int x = scanner.nextInt();
		int y = scanner.nextInt();
		double dis = Math.sqrt((((rx-x)*(rx-x))+((ry-y)*(ry-y))));
		if(dis<=r)
			System.out.print("원 안에 있습니다.");
		else
			System.out.print("원 안에 없습니다.");
		
		
	}
}

두 점 사이의 거리가 반지름보다 크면 원 안에 없습니다.

두 점 사이의 거리가 반지름 보다 작다면 원 안에 있습니다.

 

10번 문제

package extest;
import java.util.Scanner;
public class exstudy {
	
	public static void main(String[] args) {
		
		Scanner scanner = new Scanner(System.in);
		System.out.print("(1) 원의 중심과 반지름 입력:");
		int rx = scanner.nextInt();
		int ry = scanner.nextInt();
		double r = scanner.nextDouble();
		System.out.print("(2) 원의 중심과 반지름 입력:");
		int rx2 = scanner.nextInt();
		int ry2 = scanner.nextInt();
		double r2 = scanner.nextDouble();
		double dis = Math.sqrt((((rx-rx2)*(rx-rx2))+((ry-ry2)*(ry-ry2))));
		
		if(dis<=r+r2)
			System.out.print("두 원은 겹칩니다");
		else
			System.out.print("안겹쳐");
		
		
	}
}

 

11번 문제

(11-1)

package extest;
import java.util.Scanner;
public class exstudy {
	
	public static void main(String[] args) {
		
		Scanner scanner = new Scanner(System.in);
		System.out.print("달을 입력하세요(1~12)>>");
		int m = scanner.nextInt();
		if(3<=m&&m<=5)
			System.out.print("봄");
		else if(6<=m&&m<=8)
			System.out.print("여름");
		else if(9<=m&&m<=11)
			System.out.print("가을");
		else if(1<=m&&m<=12)
			System.out.print("겨울");
		else
			System.out.print("잘못 입력");
		}
		
		
}

겨울 부분이 저래 보여도 가능하다

1,2,12를 제외한 것이 모두 위의 if문에서 걸러졌기에

남은 경우는 1,2,12 뿐이라 그냥 1보다 크거나 같고 12보다 작거나 같은 거 해도 겨울이 나온다.

별로라면 그냥 아래의 코드로 ㄱㄱ하자

else if(m==1||m==2||m==12)
	System.out.print("겨울");

(11-2)

package extest;
import java.util.Scanner;
public class exstudy {
	
	public static void main(String[] args) {
		
		Scanner scanner = new Scanner(System.in);
		System.out.print("달을 입력하세요(1~12)>>");
		int m = scanner.nextInt();
		switch(m)
		{
		case 3:
		case 4:
		case 5:
			System.out.print("봄");
			break;
		case 6:
		case 7:
		case 8:
			System.out.print("여름");
			break;
		case 9:
		case 10:
		case 11:
			System.out.print("가을");
			break;
		case 12:
		case 1:
		case 2:
			System.out.print("겨울");
			break;
		default:
			System.out.print("잘못 입력");
			break;
		}
		
		
	}
}

 

12번 문제

(12-1)

package extest;
import java.util.Scanner;
public class exstudy {
	
	public static void main(String[] args) {
		
		Scanner scanner = new Scanner(System.in);
		System.out.print("연산>>");
		double p1 = scanner.nextDouble();
		char op = scanner.next().charAt(0);
		double p2 = scanner.nextDouble();
		if(op=='/'&&p2==0)
			System.out.print("0으로 나눌 수 없습니다.");
		else if(op=='+')
			System.out.print(p1+""+op+""+p2+"의 계산 결과는"+(p1+p2));
		else if(op=='-')
			System.out.print(p1+""+op+""+p2+"의 계산 결과는"+(p1-p2));
		else if(op=='*')
			System.out.print(p1+""+op+""+p2+"의 계산 결과는"+(p1*p2));
		else
			System.out.print(p1+""+op+""+p2+"의 계산 결과는"+(p1/p2));
		
		
	}
}

equals를 사용한 코드는 아래와 같다.

package extest;
import java.util.Scanner;
public class exstudy {
	
	public static void main(String[] args) {
		
		Scanner scanner = new Scanner(System.in);
		System.out.print("연산>>");
		double p1 = scanner.nextDouble();
		String op = scanner.next();
		double p2 = scanner.nextDouble();
		if(op.equals("/")&&p2==0)
			System.out.print("0으로 나눌 수 없습니다.");
		else if(op.equals("+"))
			System.out.print(p1+""+op+""+p2+"의 계산 결과는"+(p1+p2));
		else if(op.equals("-"))
			System.out.print(p1+""+op+""+p2+"의 계산 결과는"+(p1-p2));
		else if(op.equals("*"))
			System.out.print(p1+""+op+""+p2+"의 계산 결과는"+(p1*p2));
		else
			System.out.print(p1+""+op+""+p2+"의 계산 결과는"+(p1/p2));
		
		
	}
}

(12-2)

package extest;
import java.util.Scanner;
public class exstudy {
	
	public static void main(String[] args) {
		
		Scanner scanner = new Scanner(System.in);
		System.out.print("연산>>");
		double p1 = scanner.nextDouble();
		String op = scanner.next();
		double p2 = scanner.nextDouble();
		
		switch(op)
		{
		case "+":
			System.out.print(p1+""+op+""+p2+"의 계산 결과는"+(p1+p2));
			break;
		case "-":
			System.out.print(p1+""+op+""+p2+"의 계산 결과는"+(p1-p2));
			break;
		case "*":
			System.out.print(p1+""+op+""+p2+"의 계산 결과는"+(p1*p2));
			break;
		case "/":
			if(p2==0)
			{
				System.out.print("0으로 나눌 수 없습니다.");
				break;
			}
			System.out.print(p1+""+op+""+p2+"의 계산 결과는"+(p1/p2));
			break;
		}
		
		
	}
}
Comments