-
[명품 JAVA Programming] chapter02 실습문제JAVA 2021. 1. 21. 10:53
1. 원화를 입력받아 달러로 바꾸어 다음 예시와 같이 출력하는 프로그램을 작성하라. $1 = 1100원으로 가정하고 계산한다.
import java.util.Scanner; public class practice1 { public double wontodollar(int won) { return won * 1/1100; } public static void main(String args[]){ System.out.print("원화를 입력하세요(단위 원) >> "); Scanner scanner = new Scanner(System.in); int won = scanner.nextInt(); practice1 p1 = new practice1(); double dollar = p1.wontodollar(won); System.out.print(won + "원은 $" + dollar + "입니다."); scanner.close(); } }
-> 1원 = $1/1100이므로 원 단위에 1/1100을 곱해준다.
2. 2자리의 정수(10~99사이)를 입력받고, 십의 자리와 1의 자리가 같은지 판별하여 출력하는 프로그램을 작성하라.
import java.util.Scanner; public class practice2 { public boolean equal(int num){ if((num / 10) == (num % 10)){ return true; }else{ return false; } } public static void main(String args[]){ Scanner scanner = new Scanner(System.in); System.out.print("2자리수 정수 입력(10~99) >> "); int num = scanner.nextInt(); practice2 p2 = new practice2(); boolean dis = p2.equal(num); if(dis){ System.out.println("Yes! 10의 자리와 1의 자리가 같습니다."); }else{ System.out.println("No! 10의 자리와 1의 자리가 같지 않습니다."); } scanner.close(); } }
-> num을 10으로 나눈 몫(십의 자리)와 num을 10으로 나눈 후 나머지(1의 자리)가 같은지 같지 않은지 판별.
3. 정수로 된 돈의 액수를 입력받아 오만 원권, 만 원권, 천 원권, 500원짜리 동전, 100원짜리 동전, 10원짜리 동전, 1원짜리 동전
각 몇 개로 변환되는지 출력하라.
import java.util.Scanner; public class practice3 { public static void main(String args[]){ Scanner scanner = new Scanner(System.in); System.out.print("금액을 입력하시오 >>> "); int money = scanner.nextInt(); int oman = money / 50000; int man = money % 50000 / 10000; int cheon = money % 10000 / 1000; int back = money % 1000 /100; int oship = money % 100 / 50; int ship = money % 50 / 10; int ill = money % 10; System.out.println("오만원권 " + oman + "매"); System.out.println("만원권 " + man + "매"); System.out.println("천원권 " + cheon + "매"); System.out.println("백원 " + back + "개"); System.out.println("오십원 " + oship + "개"); System.out.println("십원 " + ship + "개"); System.out.println("일원 " + ill + "개"); scanner.close(); } }
-> 금액을 입력받고, 금액을 큰 화폐단위로 나눈다. 그 몫을 각 화폐단위에 저장한다.
나눈 다음, 금액을 나눈 화폐단위로 나누어 나머지를 구한 후 금액을 갱신한다. 그후, 10단위까지 앞의 과정 반복.
4. 정수 3개를 입력받고 3개의 숫자 중 중간 크기의 수를 출력하라. 평균값을 구하는 것이 아님에 주의하라.
import java.util.Scanner; public class practice4 { public int midnum(int num1, int num2, int num3){ int mid; if((num1 > num2 && num2 > num3) || (num1 < num2 && num2 < num3)){ mid = num2; }else if((num1 > num2 && num1 < num3) || (num2 > num1 && num1 > num3)){ mid = num1; }else{ mid = num3; } return mid; } public static void main(String args[]){ Scanner scanner = new Scanner(System.in); System.out.print("정수 3개를 입력하시오 >> "); int num1 = scanner.nextInt(); int num2 = scanner.nextInt(); int num3 = scanner.nextInt(); practice4 p4 = new practice4(); int midnum = p4.midnum(num1, num2, num3); System.out.println("중간값은 " + midnum); scanner.close(); } }
-> 비교를 통해 중간값 산출
5. 삼각형의 변의 길이를 나타내는 정수 3개를 입력받고 이 3개의 수로 삼각형을 만들 수 있는지 판별하라.
삼각형이 되려면 두 변의 합이 다른 한 변의 합보다 커야한다.
import java.util.Scanner; public class practice5 { public static void main(String args[]){ System.out.print("정수 3개를 입력하시오 >> "); Scanner scanner = new Scanner(System.in); int n1 = scanner.nextInt(); int n2 = scanner.nextInt(); int n3 = scanner.nextInt(); if((n1 + n2 > n3) || (n1 + n3 > n2) || (n2 + n3 > n1)){ System.out.println("삼각형이 됩니다."); }else{ System.out.println("삼각형이 되지 못합니다."); } scanner.close(); } }
-> 비교문을 통해 각 두 변의 합이 다른 한 변의 합보다 큰지 판별
6. 369 게임을 간단히 작성해보자. 1~99까지의 정수를 입력받고 정수에 3, 6, 9 중 하나가 있는 경우는 "박수짝"을 출력하고 두 개
있는 경우는 "박수짝짝"을 출력하는 프로그램을 작성하라.
import java.util.Scanner; public class practice6 { public void num369(int num){ int first = num / 10; int second = num % 10; if((first % 3 == 0) || (second % 3 == 0)){ System.out.println("박수짝"); }else if((first % 3 == 0) && (second % 3 == 0)){ System.out.println("박수짝짝"); } } public static void main(String args[]){ System.out.print("1~99 사이의 정수를 입력하시오 >> "); Scanner sc = new Scanner(System.in); int num = sc.nextInt(); practice6 p6 = new practice6(); p6.num369(num); sc.close(); } }
-> 십의 자리(num / 10)와 일의 자리(num % 10)을 구해서 십의 자리와 일의 자리가 각각 같은지 비교해서 다르게 출력.
7. 2차원 평면에서 직사각형은 왼쪽 상단 모서리와 오른쪽 하단 모서리의 두 점으로 표현한다.
(100, 100)과 (200, 200)의 두 점으로 이루어진 사각형이 있을 때, 정수 x, y 값을 입력받고 점(x, y)가 이 직사각형 안에 있는지
판변하는 프로그램을 작성하라.
import java.util.Scanner; public class practice7 { public void rect(int x, int y){ if(x <= 200 && x >= 100 && y >= 100 && y <= 200){ System.out.println(String.format("(%d, %d)는 사각형 안에 있습니다.", x, y)); } } public static void main(String args[]){ System.out.print("점 (x, y)의 좌표를 입력하시오 >> "); Scanner sc = new Scanner(System.in); int x = sc.nextInt(); int y = sc.nextInt(); practice7 p7 = new practice7(); p7.rect(x, y); sc.close(); } }
-> 100 <= x <= 200, 100 <= y <= 200 이 두 조건을 동시에 만족하는지 체크한다.
8. 직사각형을 구성하는 두 점 (x1, y1), (x2, y2)을 입력받아 (100, 100), (200, 200)의 두 점으로 이루어진
직사각형과 충돌하는지 판별하는 프로그램을 작성하라.
import java.util.Scanner; public class practice8 { 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[]){ System.out.print("(x1, y1), (x2, y2)를 입력하시오 >> "); Scanner sc = new Scanner(System.in); int x1 = sc.nextInt(); int y1 = sc.nextInt(); int x2 = sc.nextInt(); int y2 = sc.nextInt(); boolean isInRect = inRect(100, 200, x1, y1, x2, y2); if(isInRect){ System.out.println(String.format("(%d, %d), (%d, %d)는 (100, 100), (200, 200) 직사사각형과 충돌합니다.", x1, y1, x2, y2)); }else{ System.out.println(String.format("(%d, %d), (%d, %d)는 (100, 100), (200, 200) 직사사각형과 충돌하지 않습니다.", x1, y1, x2, y2)); } } }
-> 100이 입력한 x1과 x2 내부에 있는지, 200이 입력한 x2, y2 내부에 있는지 판단.
9. 원의 중심을 나타내는 한 점과 반지름을 실수 값으로 입력받아라. 그리고 실수 값으로 다른 점 (x, y)를 입력받아
이 점이 원의 내부에 있는지 판변하려 출력하라.
import java.util.Scanner; public class practice9 { public void inCircle(int x, int y, int circleX, int circleY, double circleR){ double distance = Math.sqrt((circleX - x) * (circleX - x) + (circleY - y) * (circleY - y)); if(distance <= circleR){ System.out.println(String.format("점 (%d, %d)는 원 안에 있다.", x, y)); }else{ System.out.println(String.format("점 (%d, %d)는 원 안에 없다.", x, y)); } } public static void main(String args[]){ System.out.print("원의 중심과 반지름 입력 >> "); Scanner sc = new Scanner(System.in); int circle_x = sc.nextInt(); int circle_y = sc.nextInt(); double radius = sc.nextDouble(); System.out.print("점 입력 >> "); int x = sc.nextInt(); int y = sc.nextInt(); practice9 p9 = new practice9(); p9.inCircle(x, y, circle_x, circle_y, radius); } }
-> 원의 중심과 점 사이의 거리가 원의 반지름보다 크면 원 밖에 있는 것이고 같거나 작으면 점은 원 안에 있다는 뜻이다.
10. 원의 중심을 나타내는 한 점과 반지름을 입력받는다. 두 개의 원을 입력받고 두 원이 서로 겹치는지 판단하려 출력하라.
import java.util.Scanner; public class practive10 { public static boolean Circle(int c1x, int c1y, double c1r, int c2x, int c2y, double c2r){ double distance = Math.sqrt((c1x - c2x) * (c1x - c2x) + (c1y - c2y) * (c1y - c2y)); if ((c2r + c1r) >= distance){ return true; }else{ return false; } } public static void main(String args[]){ System.out.print("첫번째 원의 중심과 반지름 입력 >> "); Scanner sc = new Scanner(System.in); int c1x = sc.nextInt(); int c1y = sc.nextInt(); double c1r = sc.nextInt(); System.out.print("두번째 원의 중심과 반지름 입력 >> "); int c2x = sc.nextInt(); int c2y = sc.nextInt(); double c2r = sc.nextInt(); boolean circle = Circle(c1x, c1y, c1r, c2x, c2y, c2r); if(circle){ System.out.println("두 원은 서로 겹친다."); }else{ System.out.println("두 원은 겹치지 않는다."); } sc.close(); } }
-> 원의 중심들 사이의 거리를 구한 후, 두 원의 반지름을 더한 값과 같거나 크면 원은 겹친다.
그렇지 않으면 겹치지 않는다.
11. 숫자를 입력받아 3~5는 "봄", 6~8은 "여름", 9~11은 "가을". 12, 1, 2의 경우엔 "겨울"을, 그 외의 숫자를 입력한 경우
"잘못입력"을 출력하는 프로그램을 작성하라.
import java.util.Scanner; public class practice11 { public static void main(String[] args) { System.out.print("답을 입력하세요(1~12) >> "); Scanner sc = new Scanner(System.in); int num = sc.nextInt(); if(num >= 3 && num <= 5){ System.out.println("봄"); }else if(num >= 6 && num <= 8){ System.out.println("여름"); }else if(num >= 9 && num <= 11){ System.out.println("가을"); }else if(num == 1 || num == 2 || num == 12){ System.out.println("겨울"); }else{ System.out.println("잘못입력"); } sc.close(); } }
-> if-else 문 사용, switch 문도 가능.
12. 사칙 연산을 입력받아 계산하는 프로그램을 작성하고자 한다. 연산자는 +, -, *, /의 네 가지로 하고 피연산자는 모두 실수로 한다.
피연산자와 연산자는 실행 사례와 같이 빈 칸으로 분리하여 입력한다.(next()사용) 0으로 나누기 시 "0으로 나눌 수 없습니다." 출력하고
종료한다.
import java.util.Scanner; public class practice12 { public static void calc(int num1, String s, int num2){ int result = 0; switch(s){ case "+": result = num1 + num2; System.out.println(String.format("%d%s%d의 계산 결과는 %d", num1, s, num2, result)); break; case "-": result = num1 - num2; System.out.println(String.format("%d%s%d의 계산 결과는 %d", num1, s, num2, result)); break; case "*": result = num1 * num2; System.out.println(String.format("%d%s%d의 계산 결과는 %d", num1, s, num2, result)); break; case "/": if(num2 == 0){ System.out.println("0으로 나눌 수 없습니다."); } result = num1 / num2; System.out.println(String.format("%d%s%d의 계산 결과는 %d", num1, s, num2, result)); break; default: System.out.println("연산자를 잘못 입력했습니다."); } } public static void main(String[] args) { System.out.print("연산 >> "); Scanner sc = new Scanner(System.in); int num1 = sc.nextInt(); String s = sc.next(); int num2 = sc.nextInt(); calc(num1, s, num2); sc.close(); } }
'JAVA' 카테고리의 다른 글
03. 반복문과 배열 그리고 예외 처리 (0) 2021.01.22 [명품 JAVA Programming] open challenge 2장 (0) 2021.01.21 02. 자바 기본 프로그래밍 (0) 2021.01.21