명품 자바 프로그래밍
명품 자바 프로그래밍 2장 실습문제
렛쓰기릿
2023. 9. 24. 00:24
1. 원화 입력받아 달러로 바꾸어 출력해보기. 1달러는 1100원으로 가정.
import java.util.Scanner;
public class Hello {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("원화를 입력하세요(단위 원)>> ");
int won = scanner.nextInt();
double dollar = won/1100;
System.out.print(won + "원은 $" + dollar + "입니다.");
scanner.close();
}
}
2. 2자리 정수를 입력받고, 십의자리와 1의 자리가 같은지 판별하여 출력하는 프로그램 작성.
import java.util.Scanner;
public class Hello {
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.println("Yes! 10의 자리 숫자와 1의 자리 숫자가 같습니다.");
else
System.out.println("No! 10의 자리 숫자와 1의 자리 숫자가 다릅니다.");
scanner.close();
}
}
3. 정수로 된 돈 액수를 입력받아 각 지폐, 동전 몇개씩으로 변환되는지 출력
import java.util.Scanner;
public class Hello {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("금액을 입력하시오 >> ");
int amount = scanner.nextInt();
System.out.println("오만원권 : " + amount/50000 + "매");
amount %= 50000;
System.out.println("만원권 : " + amount/10000 + "매");
amount %= 10000;
System.out.println("천원권 : " + amount/1000 + "매");
amount %= 1000;
System.out.println("백원 : " + amount/100 + "개");
amount %= 100;
System.out.println("오십원 : " + amount/50 + "개");
amount %= 50;
System.out.println("십원 : " + amount/10 + "개");
amount %= 10;
System.out.println("일원 : " + amount/1 + "개");
scanner.close();
}
}
4. 정수 3개를 입력받고, 3개의 숫자 중 중간 크기의 수를 출력할 것. 평균값이 아님에 주의할 것.
import java.util.Scanner;
public class Hello {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("정수 3개 입력 >> ");
int a = scanner.nextInt();
int b = scanner.nextInt();
int c = scanner.nextInt();
int mid;
if ( (b<a && a<c) || (c<a && a<b) )
mid = a;
else if ( (a<b && b<c) || (c<b && b<a) )
mid = b;
else
mid = c;
System.out.println("중간 값은 " + mid);
scanner.close();
}
}
5. 변의 길이를 나타내는 정수 3개를 입력받고, 삼각형을 만들 수 있는지 판별할 것.
import java.util.Scanner;
public class Hello {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("세 변의 길이를 입력하시오 >> ");
int a = scanner.nextInt();
int b = scanner.nextInt();
int c = scanner.nextInt();
if ( (a+b) > c && (a+c)>b && (b+c)>a )
System.out.println("삼각형의 조건을 충족합니다.");
else
System.out.println("삼각형이라고 볼 수 없습니다.");
scanner.close();
}
}
6. 369게임을 작성해보자.
import java.util.Scanner;
public class Hello {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("1~99 사이의 정수를 입력하시오 >> ");
int a = scanner.nextInt();
int clap = 0;
if ( (a/10) == 3 || (a/10) == 6 || (a/10) == 9 )
clap++;
if ( (a%10) == 3 || (a%10) == 6 || (a%10) == 9 )
clap++;
switch (clap) {
case 0:
System.out.println("3, 6, 9가 한번도 들어가지 않았습니다.");
break;
case 1:
System.out.println("박수짝");
break;
case 2:
System.out.println("박수짝짝");
break;
}
scanner.close();
}
}
7. 문제 적는거 생략...
import java.util.Scanner;
public class Hello {
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 + ")는 사각형 안에 있습니다.");
else
System.out.println("입력하신 좌표는 사각형 안에 존재하지 않습니다.");
scanner.close();
}
}
8.
import java.util.Scanner;
public class Hello {
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);
int rectx1 = 100; int recty1 = 100;
int rectx2 = 200; int recty2 = 200;
System.out.print("점 (x1,y1) 의 좌표를 입력하시오 >> ");
int x1 = scanner.nextInt(); int y1 = scanner.nextInt();
System.out.print("점 (x2,y2) 의 좌표를 입력하시오 >> ");
int x2 = scanner.nextInt(); int y2 = scanner.nextInt();
boolean clash1 = inRect(x1,y1,rectx1,recty1,rectx2,recty2);
boolean clash2 = inRect(x2,y2,rectx1,recty1,rectx2,recty2);
if (clash1 == false && clash2 == false)
System.out.println("충돌을 피했습니다!");
else
System.out.println("충돌했습니다!");
scanner.close();
}
}
9.
import java.util.Scanner;
public class Hello {
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();
double d = Math.sqrt( (cx-x)*(cx-x) + (cy-y)*(cy-y) );
if ( d < r )
System.out.println("점 (" + x + "," + y + ")은 원 안에 있다.");
else
System.out.println("점 (" + x + ", " + y + ")은 원 밖에 있다.");
scanner.close();
}
}
10.
import java.util.Scanner;
public class Hello {
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();
double d_between = Math.sqrt( (cx1-cx2)*(cx1-cx2) + (cy1-cy2)*(cy1-cy2) );
// 두 중심점 사이의 거리를 구한 뒤 그 값(d_between)을 각 원의 반지름을 더한 값(r1+r2)과 비교.
// d_between보다 r1+r2가 더 크다면 두 원은 무조건 겹치게 됨.
if ( d_between < r1+r2 )
System.out.println("두 원은 서로 겹친다.");
else
System.out.println("두 원은 서로 겹치지 않는다..");
scanner.close();
}
}
11.
if-else문
import java.util.Scanner;
public class Hello {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("달을 입력하세요(1~12) >> ");
int month = scanner.nextInt();
if (3<=month && month<=5)
System.out.println("봄");
else if (6<=month && month<=8)
System.out.println("여름");
else if (9<=month && month<=11)
System.out.println("가을");
else if (month == 1 || month == 2 || month == 3)
System.out.println("겨울");
else
System.out.println("잘못 입력");
scanner.close();
}
}
switch문
import java.util.Scanner;
public class Hello {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("달을 입력하세요(1~12) >> ");
int month = scanner.nextInt();
switch (month) {
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("잘못 입력");
}
scanner.close();
}
}
12.
if-else문
import java.util.Scanner;
public class Hello {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("연산 >> ");
int n1 = scanner.nextInt();
String oc = scanner.next();
int n2 = scanner.nextInt();
int result = 0;
scanner.close(); // 스캐너 사용 후 바로 종료
if ( oc.equals("+") )
result = n1+n2;
else if ( oc.equals("-") )
result = n1-n2;
else if ( oc.equals("/") )
if (n2 == 0) {
System.out.println("0으로 나눌 수 없습니다.");
return; } // return 하지 않으면 Line29의 문장이 출력된다.
else
result = n1/n2;
else if ( oc.equals("*") )
result = n1*n2;
System.out.println( n1 + oc + n2 + "의 계산 결과는 " + result );
}
}
switch문
import java.util.Scanner;
public class Hello {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("연산 >> ");
int n1 = scanner.nextInt();
String oc = scanner.next();
int n2 = scanner.nextInt();
int result = 0;
scanner.close(); // 스캐너 사용 후 바로 종료
switch (oc) {
case "+" :
result = n1+n2; break;
case "-" :
result = n1-n2; break;
case "/" :
if (n2 == 0) {
System.out.println("0으로 나눌 수 없습니다.");
return; }
else
result = n1/n2; break;
case "*" :
result = n1*n2; break;
}
System.out.println( n1 + oc + n2 + "의 계산 결과는 " + result );
}
}