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쪽 연습문제 이론문제_정답 (1) | 2022.10.09 |