본문 바로가기
답안지/명품 자바 에센셜

[실습문제] CHAPTER 02 자바 기본 프로그래밍

by upself 2023. 5. 11.
728x90
명품 자바 에센셜

명품 자바 에센셜

황기태

자바 프로그래밍에 빠져들게 하는 재미있고 쉬운 해설서명품 자바 에센셜은 한 학기에 자바의 기초를 습득할 수 있도록 작성된 책이다. 자바 언어에 대한 쉬운 설명과 의미 있는 예제를 도입하여 이론이 프로그래밍으로 이어지게 하고, 이해도 높은 삽화와 그림으로 본문에 쉽게 몰입할 수 있도록 하였다. 그러므로 이 책은...

 

 

 

 

 

 

 

[실습문제]

1. 두 정수를 입력받아 합을 구하여 출력하는 프로그램을 작성하라. 키보드 입력은 Scanner 클래스를 이용하라.
두 정수를 입력하세요>>10 20
10+20은 30
public class ex2_1 {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);

		System.out.print("두 정수를 입력하세요>>");
		int num1 = scan.nextInt();
		int num2 = scan.nextInt();

		int sum = num1 + num2;

		System.out.println(num1 + "+" + num2 + "=" + sum);
		scan.close();
	}// main

}

 

 

2. 한 층의 높이가 5m일 때, 건물이 몇 층인지 입력받아 높이를 출력하라.
몇 층인지 입력하세요>>155
775m 입니다.​
public class ex2_2 {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);

		System.out.print("몇 층인지 입력하세요>>");
		int num = scan.nextInt();

		System.out.println(num * 5 + "m 입니다.");

		scan.close();
	}// main

}

 

 

3. x 값을 입력받아 y = x²-3x+7 식을 계산하여 y 값을 출력하는 프로그램을 작성하라.
x 값을 입력하세요>>5
x=5, y=17​
public class ex2_3 {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);

		System.out.print("x 갑을 입력하세요>>");
		int x = scan.nextInt();

		int y = (x * x) + (-3 * x) + 7;
		System.out.println("x=" + x + ", y=" + y);

		scan.close();
	}// main

}

 

 

4. 2차원 평면에서 하나의 직사각형은 두 점으로 표현된다. (50, 50)과 (100, 100)의 두 점으로 이루어진 사각형이 있다고 하자. 한 점을 구성하는 정수 x와 y 값을 입력받고 점(x, y)가 이 직사각형 안에 있는지를 판별하는 프로그램을 작성하라.
점 (x,y)의 좌표를 입력하세요>> 60 70
점 (60, 70)은 (50, 50)과 (100, 100)의 사각형 내에 있습니다.​
public class ex2_4 {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);

		System.out.print("점 (x,y)의 좌표를 입력하세요>>");
		int x = scan.nextInt();
		int y = scan.nextInt();
		
		if(x >= 50 && 100 >= x) {
			System.out.println("점 (" + x + ", " + y + ")은 (50, 50)과 (100, 100)의 사각형 내에 있습니다.");
		}else if(y >= 50 && 100 >= y){
			System.out.println("점 (" + x + ", " + y + ")은 (50, 50)과 (100, 100)의 사각형 외에 있습니다.");
		}
		
		scan.close();

	}//main

}

 

 

5. 다음과 같이 AND와 OR의 논리 연산을 입력받아 결과를 출력하는 프로그램을 작성하라. 예를 들어 'true AND false'의 결과로 false를 , 'true OR false'의 결과로 true를 출력하면 된다. if문 대신 switch 문을 이용하라.
논리 연산을 입력하세요>>true OR false
true​
더보기

[힌트]
다음과 같이 키포드에서 3개의 토근을 읽고 switch와 case를 구성하면 된다.

boolean a = scanner.nextBoolean(); // 첫 번째 논리 값 읽기
String op = scanner.next(); // 논리 연산자(AND 또는 OR)를 문자열로 읽기
boolean b = scanner.nextBoolean(); // 두 번째 논리 값 읽기
switch(op) {
	case "AND":
    ...
}
public class ex2_5 {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);

		System.out.print("논리 연산을 입력하세요>>");
		boolean t = scan.nextBoolean();
		String op = scan.next();
		boolean f = scan.nextBoolean();
		
		switch(op) {
		case "OR":
			System.out.println("true");
			break;
		case "AND":
			System.out.println("false");
		}
		
		scan.close();

	}//main

}

 

 

6. 돈의 액수를 입력받아 오만원권, 만원권, 천원권, 500원짜리 동전, 100원짜리 동전, 10원짜리 동전, 1원짜리 동전 각 몇 개로 변환되는지 출력하라. 실습 문제 9의 힌트를 참고하라.
돈의 액수를 입력하세요>>65245
오만원1개, 만원1개, 천원5개, 500원0개, 100원2개, 10원4개, 1원5개​
public class ex2_6 {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);

		System.out.print("돈의 액수를 입력하세요>>");
		int money = scan.nextInt();

		System.out.print("오만원" + money / 50000 + "개, ");
		money %= 50000;

		System.out.print("만원" + money / 10000 + "개, ");
		money %= 10000;

		System.out.print("천원" + money / 1000 + "개, ");
		money %= 1000;

		System.out.print("500원" + money / 500 + "개, ");
		money %= 500;

		System.out.print("100원" + money / 100 + "개, ");
		money %= 100;

		System.out.print("10원" + money / 10 + "개, ");
		money %= 10;

		System.out.print("1원" + money / 1 + "개");
		money %= 1;

		scan.close();

	}// main

}

 

 

7. 학점이 A, B이면, "Excellent", 학점이 C, D이면 "Good", 학점이 F이면 "Bye"라고 출력하는 프로그램을 작성하라. switch와 break를 활용하라.
학점을 입력하세요>>B
Excellent​
public class ex2_7 {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);

		System.out.print("학점을 입력하세요>>");
		char credit = scan.next().charAt(0);

		switch (credit) {
		case 'A':
		case 'B':
			System.out.println("Excellent");
			break;
			
		case 'C':			
		case 'D':
			System.out.println("Good");
			break;
			
		case 'F':
			System.out.println("Bye");
			break;
		}
		scan.close();

	}// main

}

 

 

8. 음료수 종류와 잔 수를 입력받으면 가격을 알려주는 프로그램을 작성하라. 에스프레소는 2000원, 아메리카노 2500원, 카푸치노 3000원, 카페라떼 3500원이다.
커피 주문하세요>>카푸치노 3
9000원입니다.​
⑴ if 문을 활용하라.
⑵ switch 문을 활용하라.
더보기

[힌트]
if 문으로 문자열을 비교할 때는 반드시 equalse() 메소드를 이용하라. 예를 들면 다음과 같다.

String coffee; if(coffee.equalse("에스프레소"))

⑴ if 문을 활용하라.

public class ex2_8 {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);

		System.out.print("커피를 주문하세요>>");
		String coffee = scan.next();
		int sum = scan.nextInt();

		// if 문을 활용하라.
		if (coffee.equals("에스프레소"))
			System.out.println(sum * 2000 + "원입니다.");
		else if(coffee.equals("아메리카노"))
			System.out.println(sum * 2500 + "원입니다.");
		else if(coffee.equals("카푸치노"))
			System.out.println(sum * 3000 + "원입니다.");
		else if(coffee.equals("카페라떼"))
			System.out.println(sum * 3500 + "원입니다.");
		else
			System.out.println("메뉴판에 없습니다.");

		scan.close();

	}// main

}

⑵ switch 문을 활용하라.

public class ex2_8 {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);

		System.out.print("커피를 주문하세요>>");
		String coffee = scan.next();
		int sum = scan.nextInt();

		// switch 문을 활용하라.
		switch (coffee) {
		case "에스프레소": 
			System.out.println(sum * 2000 + "원입니다.");
			break;
		case "아메리카노": 
			System.out.println(sum * 2500 + "원입니다.");
			break;
		case "카푸치노": 
			System.out.println(sum * 3000 + "원입니다.");
			break;
		case "카페라떼": 
			System.out.println(sum * 3500 + "원입니다.");
			break;
		default:
			System.out.println("메뉴판에 없습니다.");
		}

		scan.close();

	}// main

}

 

 

9. 369게임의 일부를 작성해보자. 1~99까지의 정수를 입력받고 수에 3, 6, 9 중 하나가 있는 경우는 "박수짝", 두 개 있는 경우는 "박수짝짝", 하나도 없으면 "박수없음"을 출력하는 프로그램을 작성하라. 예를 들면, 13인 경우 "박수짝", 36인 경우 "박수짝짝", 5인 경우 "박수없음"을 출력하면 된다.
1~99 사이의 정수를 입력하세요>>36
박수짝짝​
더보기

[힌트]
정수 n의 값이 36이라고 할 때 정수 3과 6을 분리하는 방법은 다음 코드를 참고하라.

int first = n/10; // 10으로 나눈 몫 = 3
int second = n%10; // 10으로 나눈 나머지 = 6
public class ex2_9 {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);

		System.out.print("1~99 사이의 정수를 입력하세요>>");
		int num = scan.nextInt();

		int first = num / 10; // 10으로 나눈 몫 = 3
		int second = num % 10; // 10으로 나눈 몫 = 6

		if (num < 100) {
			if (first == 3 || first == 6 || first == 9) {
				if (second == 3 || second == 6 || second == 9)
					System.out.println("박수짝짝");
				else
					System.out.println("박수짝");
			} else if (first != 3 || first != 6 || first != 9) {
				System.out.println("박수짝");
			} else {
				System.out.println("박수없음");
			}
		} else {
			System.out.println("1~99 사이를 정수가 아닙니다.");
		}

		scan.close();

	}// main

}

 

 

10. 실습 문제 8번을 변형해보자. 에스프레소는 2000원, 아메리카노 2500원 카푸치노 3000원, 카페라떼 3500원이며, 에스프레소의 경우 10잔 이상을 주문하며 가격의 5%를 할인해준다.
커피 주문하세요>>에스프레소 9
18000원입니다.​
커피 주문하세요>>에스프레소 10
19000원입니다.​
public class ex2_10 {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);

		System.out.print("커피를 주문하세요>>");
		String coffee = scan.next();
		int sum = scan.nextInt();

		switch (coffee) {
		case "에스프레소":
			if (sum >= 10)
				System.out.println((int) (sum * 2000 * 0.95) + "원입니다.");
			else
				System.out.println(sum * 2000 + "원입니다.");
			break;
		case "아메리카노":
			System.out.println(sum * 2500 + "원입니다.");
			break;
		case "카푸치노":
			System.out.println(sum * 3000 + "원입니다.");
			break;
		case "카페라떼":
			System.out.println(sum * 3500 + "원입니다.");
			break;
		default:
			System.out.println("메뉴판에 없습니다.");
		}

		scan.close();

	}// main

}

 

 

Bonus 1. 사칙 연산을 입력받아 실행해주는 프로그램을 작성하고자 한다. 이때 연산자는 +, -, *, /의 4가지로 하고 피연산자는 모두 실수이며, 다음과 같이 피연산자와 연산자는 빈칸으로 분리하여 입력하는 것으로 한다.
32.3 + 3 16.6 - 20.3 5 * 2.1 6 / 3
이 프로그램의 실행 사례가 아래와 같을 때, 다음 코드를 완성하라.
식을 입력하세요>>32.3 + 3
연산 결과 35.3​
import java.util.Scanner; //Scanner 클래스를 사용하기 위한 import 문

public class ex2_11 {

	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in); // Scanner 객체 생성
		System.out.print("식을 입력하세요>>");
		double op1 = scanner.nextDouble(); // 첫 번째 피연산자 입력
		String operator = scanner.next(); // 연산자 스트링 입력
		double op2 = scanner.nextDouble(); // 두 번째 피연산자 입력

		double result = 0;
		switch (operator) {
		case "+":
			result = op1 + op2;
			break;
		case "-":
			result = op1 - op2;
			break;
		case "*":
			result = op1 * op2;
			break;
		case "/":
			if (op2 == 0) { // 나누는 수가 0이면
				System.out.println();
				return; // 프로그램 종료
			}
			result = op1 / op2;
			break;

		default:
			System.out.println("연산 기호가 잘못되었습니다.");
		}
		System.out.println("연산 결과 " + result); // 연산 결과 출력

		scanner.close();

	}// main

}

 

반응형