쌓고 쌓다
[Java] 명품 자바 프로그래밍 2장 실습 문제 풀이 본문
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;
}
}
}
'프로그래밍 > java' 카테고리의 다른 글
[Java] 명품 자바 프로그래밍 3장 Open Challenge 풀이 (0) | 2022.04.07 |
---|---|
[Java] 명품 자바 프로그래밍 2장 Open Challenge 풀이 (0) | 2022.04.07 |
[JAVA] 리터럴 (0) | 2022.03.15 |
[JAVA] 인터페이스(interface) (0) | 2021.12.28 |
[JAVA] 추상 클래스 (0) | 2021.12.27 |
Comments