2장 이론 문제
1. 자바에서 클래스를 선언할 때 사용하는 키워드는?
답 : class
2. 다음 중 식별자 사용이 잘못된 경우를 모두 골라라.
int _i;
int %j;
char 안녕;
double 1var;
char student_ID;
답 : 2번째 %j => '_'와 '$'를 제외한 특수문자는 사용할 수 없다.
4번째 1var => 변수 이름에 숫자를 쓸 수 있으나 첫 번째로 올 수 없다.
3. 다음 각 항목이 나타내는 변수를 선언하라.
(1) int 형 변수 age 답 : int age;
(2) 0.25로 값이 초기화된 float형 변수 f 답 : float f = 0.25f;
(3) age값과 f값을 더한 값으로 초기화된 double형 변수 d 답 : double d = age + f;
(4) 문자 'a'로 초기화된 char형 변수 c 답 : char c = 'a';
(5) 자신의 이름으로 초기화된 문자열 변수 name 답 : String name = "Cocoon";
4. 다음 수식의 결과 값과 타입은?
(1) 67 + 12.8 답 : 79.8 double
(2) 'c' + 1 답 : 100 int
(3) 10/3 답 : 3 int
(4) 10.0/3 답 : 3.333.... double
(5) 10 == 9 답 : false boolean
5. 다음 문장을 조건식으로 나타내라.
(1) a는 b보다 크거나 같다. 답 : a >= b
(2) a는 b보다 작고 c보다 크다. 답 : a < b && a > c
(3) a더하기 3은 10과 같지 않다. 답 : a + 3 != 10
(4) a는 10보다 크거나 b와 같다. 답 : a > 10 || a == b
6. 다음 리터럴 중에서 case 문의 값으로 사용할 수 없는 것은?
답 : ④5.4 (case문에 지정하는 값은 정수 리터럴, 문자 리터럴, 문자열 리터럴만 허용한다.)
7. 다음은 20과 30을 더해 50을 출력하려고 작성한 자바 프로그램이지만 오류가 있다.
public class SampleProgram {
int i;
int j;
i = 20;
j = 30;
System.out.println(i+j);
}
(1) 이 프로그램은 어떤 소스 파일 이름으로 저장되어야 하는가?
답 : SampleProgram.java
(2) 이 프로그램이 정상적인 결과를 내도록 수정하라.
public class SampleProgram {
public static void main(String[] args) {
int i;
int j;
i = 20;
j = 30;
System.out.println(i+j);
}
}
8. 다음 코드를 실행한 결과 출력되는 내용은?
switch(option) {
case 1: System.out.println("옵션1");
case 2: System.out.println("옵션2");
case 3: System.out.println("옵션3"); break;
default: System.out.println("해당 없음");
}
(1) option이 1일 때
옵션1
옵션2
옵션3
(2) option이 2일 때
옵션2
옵션3
(3) option이 3일 때
옵션3
(4) option이 4일 때
해당 없음
case문에 break가 없는 경우, break문을 만날 때까지 내려갑니다.
9. 다음 조건문을 삼항 조건 연산자를 이용하여 한 줄로 작성하라.
if(j%2 == 0) i = 10;
else i = 20;
답 : int i = (j%2 == 0) ? 10 : 20 ;
10. 다음 if-else 문을 switch 문으로 바꾸어라.
if(i == 1)
System.out.println("1");
else if(i == 2)
System.out.println("@");
else if(i == 3)
System.out.println("#");
else
System.out.println("*");
switch(i) {
case 1 : System.out.println("1"); break;
case 2 : System.out.println("@"); break;
case 3 : System.out.println("#"); break;
default : System.out.println("*");
}
2장 실전 문제
1. 두 정수를 입력받아 합을 구하여 출력하는 프로그램을 작성하라. 키보드 입력은 Scanner 클래스를 이용하라.
package blog;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("두 정수를 입력하세요>>");
int a,b;
a = sc.nextInt();
b = sc.nextInt();
System.out.println(a+b);
}
}
2. 한 층의 높이가 5m일 때, 건물이 몇 층인지 입력받아 높이를 출력하라.
package blog;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("몇 층인지 입력하세요>>");
int floor = sc.nextInt();
System.out.println(floor*5 + "m 입니다.");
}
}
3. x 값을 입력받아 y = x²-3x+7 식을 계산하여 y값을 출력하는 프로그램을 작성하라.
package blog;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("x 값을 입력하세요>>");
int x = sc.nextInt();
int y = x*x-3*x+7;
System.out.println("x="+x+", y="+y);
}
}
4. 2차원 평면에서 하나의 직사각형은 두 점으로 표현된다. (50,50)과 (100,100)의 두 점으로 이루어진 사각형이 있다고 하자. 한 점을 구성하는 정수 x와 y값을 입력받고 점 (x, y)가 이 직사각형 안에 있는지 판별하는 프로그램을 작성하라.
package blog;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("x 값을 입력하세요>>");
int x = sc.nextInt();
int y = sc.nextInt();
if(x >= 50 && x <= 100 && y >= 50 && y <= 100)
System.out.print("점("+x+","+y+")은 (50,50)과 (100,100)의 사격형 내에 있습니다.");
else
System.out.print("점("+x+","+y+")은 (50,50)과 (100,100)의 사격형 내에 있지 않습니다.");
}
}
5. 다음과 같이 AND와 OR의 논리 연산을 입력받아 결과를 출력하는 프로그램을 작성하라. 예를 들어 'true AND false'의 결과로 false를, 'true OR false'의 결과로 true를 출력하면 된다. if문 대신 switch문을 이용하라.
package blog;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("논리 연산을 입력하세요>>");
boolean a = sc.nextBoolean();
String operator = sc.next();
boolean b = sc.nextBoolean();
switch (operator) {
case "AND":
System.out.println(a&b);
break;
case "OR":
System.out.println(a||b);
break;
default:
System.out.println("잘못된 입력입니다.");
break;
}
}
}
6. 돈의 액수를 입력받아 오만원권, 만원권, 천원권, 500원짜리 동전, 100원짜리 동전, 10원짜리 동전, 1원짜리 동전 각 몇 개로 변환되는지 출력하라.
package blog;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("돈의 액수를 입력하세요>>");
int money = sc.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.println("1원"+money+"개");
}
}
7. 학점이 A, B이면 "Excellent", 학점이 C, D이면 "Good", 학점이 F이면 "Bye"라고 출력하는 프로그램을 작성하라. switch와 break을 활용하라.
package blog;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("돈의 액수를 입력하세요>>");
String grade = sc.next();
switch (grade) {
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;
default:
System.out.println("잘못 입력하엿습니다.");
break;
}
}
}
8. 음료수 종류와 잔 수를 입력받으면 가격을 알려주는 프로그램을 작성하라. 에스프레소는 2000원, 아메리카노 2500원, 카푸치노 3000원, 카페라떼 3500원이다.
(1) if문을 활용하라.
package blog;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("커피를 주문하세요>>");
String coffee = sc.next();
int Quantity = sc.nextInt();
if(coffee.equals("에스프레소"))
System.out.println(2000*Quantity+"원입니다.");
else if(coffee.equals("아메리카노"))
System.out.println(2500*Quantity+"원입니다.");
else if(coffee.equals("카푸치노"))
System.out.println(3000*Quantity+"원입니다.");
else if(coffee.equals("카페라떼"))
System.out.println(3500*Quantity+"원입니다.");
else
System.out.println("잘못 입력하엿습니다.");
}
}
(2) switch문을 활용하라.
package blog;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("커피를 주문하세요>>");
String coffee = sc.next();
int Quantity = sc.nextInt();
switch (coffee) {
case "에스프레소":
System.out.println(2000*Quantity+"원입니다.");
break;
case "아메리카노":
System.out.println(2500*Quantity+"원입니다.");
break;
case "카푸치노":
System.out.println(3000*Quantity+"원입니다.");
break;
case "카페라떼":
System.out.println(3500*Quantity+"원입니다.");
break;
default:
System.out.println("잘못 입력하엿습니다.");
break;
}
}
}
9. 369게임의 일부를 작성해보자. 1~99까지의 정수를 입력받고, 수에 3, 6, 9중 하나가 있는 경우는 "박수짝", 두 개 있는 경우는 "박수짝짝", 하나도 없으면 "박수없음"을 출력하는 프로그램을 잣성하라. 예를 들면, 13인 경우 "박수짝", 36인 경우 "박수짝짝", 5인 경우 "박수없음"을 출력하면 된다.
package blog;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("1~99 사이의 정수를 입력하세요>>");
int num = sc.nextInt();
int first = num/10;
int second = num%10;
int cnt = 0;
if(first == 3 || first == 6 || first == 9) cnt++;
if(second == 3 || second == 6 || second == 9) cnt++;
switch (cnt) {
case 0: System.out.println("박수없음"); break;
case 1: System.out.println("박수짝"); break;
case 2: System.out.println("박수짝짝"); break;
default:
break;
}
}
}
10. 실습 문제 8번을 변형해보자. 에스프레소는 2000원, 아메리카노 2500원, 카푸치노 3000원, 카페라떼 3500원이며, 에스프레소의 경우 10잔 이상을 주문하면 가격의 5%를 할인해준다.
package blog;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("커피를 주문하세요>>");
String coffee = sc.next();
int Quantity = sc.nextInt();
switch (coffee) {
case "에스프레소":
int sum = 2000*Quantity;
if(Quantity >= 10) sum *= 0.95;
System.out.println(sum+"원입니다.");
break;
case "아메리카노":
System.out.println(2500*Quantity+"원입니다.");
break;
case "카푸치노":
System.out.println(3000*Quantity+"원입니다.");
break;
case "카페라떼":
System.out.println(3500*Quantity+"원입니다.");
break;
default:
System.out.println("잘못 입력하엿습니다.");
break;
}
}
}
Bonus 1. 사칙 연산을 입력받아 실행해주는 프로그램을 작성하고자 한다. 이때 연산자는 +, -, *, /의 4가지로 하고 피연산자는 모두 실수이며, 다음과 같이 피연산자와 연산자는 빈칸으로 분리하여 입력하는 것으로 한다.
32.3 + 3 16.6 - 20.3 5 * 2.1 6 / 3
package blog;
import java.util.Scanner;
public class Arithmetic {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("식을 입력하세요>>");
double op1 = sc.nextDouble();
String operator = sc.next();
double op2 = sc.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) {
System.out.println("0으로 나눌 수 없습니다.");
return;
}
result = op1 / op2; break;
default : System.out.println("연산 기호가 잘못되었습니다.");
}
System.out.println(result);
}
}
출처 -명품 자바 에센셜 (저자 : 황기태)
'☕️JAVA' 카테고리의 다른 글
[JAVA] 자바 for-each문 사용법 및 예제코드 (0) | 2021.01.07 |
---|---|
[JAVA] 자바 배열(Array) 선언, 생성, 초기화, 인덱스 접근 방법 (0) | 2021.01.06 |
[JAVA] 명품 자바 에센셜 연습문제 1장 풀이 (0) | 2021.01.05 |
[JAVA] 자바 반복문 (for문 / while문 / do~while문) (0) | 2020.02.18 |
[JAVA] 자바 조건문 (if문 / switch문) (0) | 2020.02.18 |