728x90
명품 자바 프로그래밍 3장 164~170쪽 연습문제 실습문제_정답
luxury java programming ch3 p164~170 exercise practice correct answer
1번
(1) 답: 0부터 100미만까지 짝수들의 합을 계산하는 코드이며, 실행 결과 2450이 출력된다.
(2) 답:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
public class WhileTest {
public static void main(String[] args) {
// 변수
int sum = 0, i = 0; // int형 변수 sum, i 선언 동시에 0 대입, i에 0 대입하여 초기화
// 연산 // 총합, 반복제어변수
while(i < 100) { // 변수 i가 100보다 작을동안 반복
sum = sum + i; // sum에 i 합함
i += 2; // 변수 i에 +2
}
// 출력
System.out.println(sum); // System.out.println() 메소드 호출하여 변수 sum에 저장된 값 출력
}
}
|
cs |
(3) 답:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
public class ForTest {
public static void main(String[] args) {
// 변수 선언
int sum = 0;
// 연산
for(int i = 0; i < 100; i += 2) {
sum += i;
}
// 출력
System.out.println(sum);
}
}
|
cs |
(4) 답:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
public class DoWhileTest {
public static void main(String[] args) {
// 변수 선언
int sum = 0, i = 0; // while이나 doWhile문의 반복제어변수는 그 전에 선언되어 있어야 한다.
// 연산
do{
sum += i;
i += 2;
}while(i < 100);
// 출력
System.out.println(sum);
}
}
|
cs |
2번
답:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
public class Ch3_2 {
public static void main(String[] args) {
int[][] n = {{1}, {1, 2, 3}, {1}, {1, 2, 3, 4}, {1, 2}}; // int형 2차원 비정방형 배열 n 선언 동시에 초기화 블럭으로 초기화하여 배열 생성
for(int i = 0; i < n.length; i++) { // 반복제어변수 int형 변수 i 선언 동시에 0 대입하여 초기화, i가 배열 n의 행의 크기인 length 보다 작을동안 반복, i에 +1
for(int j = 0; j < n[i].length; j++) { // 반복제어변수 int형 변수 j 선언 동시에 0 대입하여 초기화, j가 배열 n의 인덱스 i번째 행의 열의 크기인 length보다 작을동안 반복, j에 +1
System.out.print(n[i][j] + "\t"); // System.out.print() 메소드 호출하여 배열 n의 인덱스 i번째 행의 j번째 열의 요소 출력
} // 한 행의 모든 요소 출력 완료
System.out.println(); // 줄바꿈
} // 배열 n의 모든 요소 출력 완료
}
}
|
cs |
// 비정방형 배열이므로 length 필드로 반복문을 제어한다.
3번
답:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
import java.util.Scanner;
public class Ch3_3 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 변수
int number;
// 로직
// 1. 줄 개수 입력
System.out.print("정수를 입력하시오>>");
number = scanner.nextInt();
// 2. 별 출력
for(int i = number; i > 0; i--) {
for(int j = 0; j < i; j++) {
System.out.print("*");
}
System.out.println();
}
scanner.close();
}
}
|
cs |
4번
답:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
import java.util.Scanner;
public class Ch3_4 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 변수 선언
char c;
// 입력
System.out.print("소문자 알파벳 하나를 입력하시오>>");// 입력 안내 메세지 출력
c = sc.next().charAt(0); // 문자열로 리턴 받아 charAt() 메소드 호출하여 0번째 인덱스에 해당 하는 문자 리턴 받아 대입
// Scanner는 문자를 입력 받는 기능이 없다. 그러므로 문자열을 입력 받아야 한다.
// 출력
for(int i = c; i >= 'a'; i--) { // 총 a ~ 변수 c에 저장된 문자 만큼의 줄 출력
for(int j = 'a'; j <= i; j++) { // 문자 'a'부터 변수 i보다 작을 동안 반복
System.out.print((char) j);
}
System.out.println();
}
sc.close();
}
}
|
cs |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
import java.util.Scanner;
public class Ch3_4 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 선언
char s;
// 로직
// 1. 알파벳 입력
System.out.print("소문자 알파벳 하나를 입력하시오>>");
s = scanner.next().charAt(0);
// 2. 알파벳 출력
for(int i = s - 'a' ; i >= 0; i--) { // 총 문자 'a' ~ 변수 s에 저장된 문자 만큼 반복
for(char c = 'a'; c <= 'a' + i; c++) { // 문자 'a' ~ 'a' + i 까지 문자 출력
System.out.print((char) c);
}
System.out.println();
}
scanner.close();
}
}
|
cs |
5번
답:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
import java.util.Scanner;
public class Ch3_5 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 변수 및 상수 선언
int[] positiveNumber = new int[10];
// 로직
// 1. 양의 정수 10개 입력 및 배열에 저장
System.out.print("양의 정수 10개를 입력하시오>>");
for(int i = 0; i < positiveNumber.length; i++) {
positiveNumber[i] = scanner.nextInt();
}
// 2. 3의 배수 출력
System.out.print("3의 배수는 ");
for(int i = 0; i < positiveNumber.length; i++) {
if(positiveNumber[i] % 3 == 0) {
System.out.print(positiveNumber[i] + " ");
}
else {
continue;
}
}
scanner.close();
}
}
|
cs |
6번
답:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
import java.util.Scanner;
public class Ch3_6 {
public static void main(String[] args) {
// 변수 선언
Scanner sc = new Scanner(System.in);
int[] unit = {50000, 10000, 1000, 500, 100, 50, 10, 1};
int count, money; // 동전의 개수, 사용자로부터 입력 받은 금액
// 입력
System.out.print("금액을 입력하시오>>");
money = sc.nextInt();
// 연산
for(int i = 0; i < unit.length; i++) {
count = money / unit[i]; // unit[i]원 짜리 동전의 개수 구하는 연산
if(count != 0) { // 동전의 개수가 0이 아니면 개수 출력
System.out.println(unit[i] + "원 짜리 : " + count + "개");
}
money = money % unit[i]; // 나머지 돈
}
sc.close();
}
}
|
cs |
7번
답:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
import java.util.Scanner;
public class Ch3_7 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 변수 및 상수 선언
int[] numbers = new int[10];
int sum = 0;
double average;
// 로직
// 1. 1 ~ 10 범위 정수 10개 랜덤 저장 및 배열 출력
// 2. 합 연산
System.out.print("랜덤한 정수들 : ");
for(int i = 0; i < numbers.length; i++) {
numbers[i] = (int)(Math.random() * 10 + 1);
System.out.print(numbers[i] + " ");
sum += numbers[i];
}
System.out.println();
// 3. 평균 연산
average = (double) sum / numbers.length;
// 4. 결과 출력
System.out.println("평균은 " + average);
scanner.close();
}
}
|
cs |
8번
답:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
import java.util.Scanner;
public class Ch3_8 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 선언
int[] numbers;
int randomNumber, count;
// 로직
// 1. 저장할 정수 개수 입력
System.out.print("정수 몇개?");
count = scanner.nextInt();
// 2. 배열 생성
numbers = new int[count];
// 3. 랜덤 정수 배열에 저장
for(int i = 0; i < numbers.length; i++) {
randomNumber = (int) (Math.random() * 100 + 1);
numbers[i] = randomNumber;
// 중복 검증
for(int j = 0; j < i; j++) { // 지금까지 저장된 배열 요소 중에서
if (randomNumber == numbers[j]) { // 중복되는 수가 있다면
i--; // 배열 요소 인덱스 증가 방지 위해 -1, 해당 인덱스에 저장할 랜덤 정수 다시 뽑게 됨
break;
}
else {
continue;
}
} // 지금까지 저장된 배열 요소 중에서 중복되는 수가 있는지 중복 검증 모두 완료
}
// 4. 배열 출력
for(int i = 0; i < numbers.length; i++) {
System.out.print(numbers[i] + "\t");
if(i % 10 == 9) { // 원소가 한 줄에 10개가 출력될 때는 인덱스가 9, 19 ... 이다.
System.out.println();
}
}
scanner.close();
}
}
|
cs |
9번
답:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
public class Ch3_9 {
public static void main(String[] args) {
// 배열 선언 동시에 생성
int[][] numbers = new int[4][4]; // 크기가 4행 4열인 int형 배열 numbers 선언 동시에 생성
// 배열에 랜덤 정수 저장 동시에 출력
for(int i = 0; i < numbers.length; i++) {
for(int j = 0; j <numbers[i].length; j++) {
numbers[i][j] = (int) (Math.random() * 10 + 1);
System.out.print(numbers[i][j] + "\t");
} // 한 행의 모든 요소 저장 및 출력 완료
System.out.println(); // 줄바꿈
}
}
}
|
cs |
10번
답:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
public class Ch3_10 {
public static void main(String[] args) {
// 배열
int[][] numbers = new int[4][4]; // 랜덤한 정수 저장 배열
boolean[][] index = new boolean[4][4]; // 저장 위치 배열
// 랜덤한 위치에 1 ~ 10 범위 랜덤 정수 저장
for(int i = 0; i < 10; i++) {
int row = (int) (Math.random() * 4);
int col = (int) (Math.random() * 4);
if(index[row][col] != true) {
numbers[row][col] = (int) (Math.random() * 10 + 1);
index[row][col] = true;
}
else {
i--;
continue;
}
}
// 나머지 위치에 0 저장
for(int i = 0; i < index.length; i++) {
for(int j = 0; j < index[i].length; j++) {
if(index[i][j] == true) {
continue;
}
else {
numbers[i][j] = 0;
}
}
}
// 배열 출력
for(int i = 0; i < numbers.length; i++) {
for(int j = 0; j < numbers[i].length; j++) {
System.out.print(numbers[i][j] + "\t");
}
System.out.println();
}
}
}
|
cs |
11번
답:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
public class Average {
public static void main(String[] args) {
// 변수 선언
int sum = 0;
double average;
// 총 합 연산
for(int i = 0; i < args.length; i++) {
sum += Integer.parseInt(args[i]);
}
// 평균 연산
average = (double) sum / args.length;
// 평균 출력
System.out.println((int) average);
}
}
|
cs |
// 문자열을 정수로 변환할 때, Wrapper 클래스의 메소드를 활용한다.
// Integer.parseInt("10"); // int형 10을 리턴
12번
답:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
public class Add {
public static void main(String[] args) {
// 변수 선언
int sum = 0; // int형 변수 sum 선언 동시에 0 대입하여 초기화, 총합
// 총 합 연산, 명령행 인자 중에서 정수만
for(int i = 0; i < args.length; i++) {
try {
sum += Integer.parseInt(args[i]); // 문자열 배열 args의 인덱스 i번째 요소에 저장된 문자열을 int형으로 변환한 뒤, sum에 합함
}
catch(NumberFormatException e) { // 만약 args[i]가 정수가 아닌 경우 NumberFormatException 발생
continue; // 다음 반복으로 넘어감, 즉 문자열 배열 args의 다음 요소에 접근
}
}
// 연산 결과 출력
System.out.println(sum);
}
}
|
cs |
13번
답:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
public class Ch3_13 {
public static void main(String[] args) {
for(int i = 1; i <= 99; i++) {
int ten = i / 10;
int one = i % 10;
if((ten == 3 || ten == 6 || ten == 9) && (one == 3 || one == 6 || one == 9)) {
System.out.println(i + " 박수 짝짝");
} else if (one == 3 || one == 6 || one == 9) {
System.out.println(i + " 박수 짝");
} else if (ten == 3 || ten == 6 || ten == 9) {
System.out.println(i + " 박수 짝");
}
}
}
}
|
cs |
14번
답:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
import java.util.Scanner;
public class Ch3_14 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 선언
String[] course = {"java", "C++", "HTMLS", "컴퓨터구조", "안드로이드" };
int[] score = {95, 88, 76, 62, 55};
String name; // 사용자로부터 입력 받은 과목명 저장할 String형 변수 name
while(true) {
System.out.print("과목 이름>>");
name = sc.next();
// 사용자가 그만을 입력한 경우 프로그램 종료
if(name.equals("그만")) {
break;
}
// 사용자가 입력한 과목에 해당하는 점수 찾기
for(int i = 0; i < course.length; i++) {
if(name.equals(course[i])) { // 사용자가 입력한 과목이 배열에 있는 경우
System.out.println(course[i] + "의 점수는 " + score[i]);// 점수 출력 후
break; // 점수 찾기 반복문 빠져나감, 다른 과목 이름 검색
}
else if(i + 1 == course.length) { // course 배열 요소 끝까지 찾아 봤을 때, 사용자가 입력한 과목이 없는 경우
System.out.println("없는 과목입니다."); // 없는 과목입니다. 안내 메세지 출력
}
}
}
sc.close();
}
}
|
cs |
15번
답:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
import java.util.InputMismatchException;
import java.util.Scanner;
public class Multiply {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while(true) {
System.out.print("곱하고자 하는 두 수 입력>>");
try { // 사용자가 정수가 아닌 수를 입력한 경우, catch 블럭으로 분기
// 입력
int n = scanner.nextInt();
int m = scanner.nextInt();
// 출력
System.out.println(n + "x" + m + "=" + n*m);
break;
}
catch (InputMismatchException e) { // 입력 오류 시 발생하는 예외, 정수 입력을 기다리는 코드가 실행되고 있는데 정수가 아닌 문자열을 입력한 경우 발생
System.out.println("실수는 입력하면 안됩니다."); // 안내 메세지 호출
scanner.nextLine(); // 입력 버퍼에 있는 사용자가 잘 못 입력한 수를 모두 제거하기 위해 nextLine() 메소드 호출
}
}
scanner.close();
}
}
|
cs |
16번
답:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
import java.util.Scanner;
public class Ch3_16 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 선언
String[] str = {"가위", "바위", "보"};
String user, computer; // 사용자와 컴퓨터가 낸 것 저장하는 String형 변수
int i; // 컴퓨터가 낼 것 제어할 인덱스
// 게임 시작
System.out.println("컴퓨터와 가위 바위 보 게임을 합니다.");
while(true) {
// 사용자
System.out.print("가위 바위 보!>>");
user = sc.next();
// 컴퓨터
i = (int) (Math.random() * 3);
computer = str[i];
// 사용자가 그만을 입력한 경우 프로그램 종료
if(user.equals("그만")) {
System.out.println("게임을 종료합니다...");
break;
}
// 승패 출력
System.out.print("사용자 = " + user + ", 컴퓨터 = " + computer + ", ");
if((user.equals("가위") && computer.equals("보")) ||
(user.equals("바위") && computer.equals("가위")) ||
(user.equals("보") && computer.equals("주먹"))) {
System.out.println("사용자가 이겼습니다.");
}else if((user.equals("보") && computer.equals("가위")) ||
(user.equals("가위") && computer.equals("바위")) ||
(user.equals("주먹") && computer.equals("보"))) {
System.out.println("컴퓨터가 이겼습니다.");
} else if(user.equals(computer)) {
System.out.println("비겼습니다.");
}
}
sc.close();
}
}
|
cs |
728x90
'1. Java 자바 > 1_0. 책, 강의' 카테고리의 다른 글
[명품 자바 프로그래밍] 4장 178쪽 체크 타임_정답 (0) | 2022.10.13 |
---|---|
[명품 자바 프로그래밍] 3장 교재_실습 문제 정리 (0) | 2022.10.11 |
[명품 자바 프로그래밍] 3장 159쪽 오픈 챌린지_정답 (1) | 2022.10.10 |
[명품 자바 프로그래밍] 3장 교재_이론 문제 정리 (0) | 2022.10.09 |
[명품 자바 프로그래밍] 3장 161~163쪽 연습문제 이론문제_정답 (0) | 2022.10.09 |