개인 학습용 해설/명품 Java Programming

명품 JAVA Programming 4판 3장 연습문제 - 실습문제 개인 풀이

SeongJo 2021. 11. 8. 20:00
반응형

 

 

안녕하세요 성조입니다.

개인 풀이 내용이며, 정답이 아닙니다!

답이 다르다 생각되시면 댓글 부탁드리겠습니다!

 


1. 다음 프로그램에 대해 물음에 답하라

1
2
3
4
5
6
int  sum=0, i=0;
while (i < 100){
    sum = sum + i;
    i +=2;
}
System.out.println(sum);
 

(1) 무엇을 계산하는 코드이며 실행 결과 출력되는 내용은?

-> 0부터 100미만까지 짝수의 합을 구하는 코드이며, 값은 2450가 나온다.

 

(2) 위의 코드를 main() 메소드로 만들고 WhileTest 클래스로 완성하라.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
public class WhileTest {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int  sum=0, i=0;
        while (i < 100){
            sum = sum + i;
            i +=2;
        }
        System.out.println(sum);
    }
 
}
 
 

 

(3) for 문을 이용하여 동일하게 실행되는 ForTest 클래스를 작성하라.

1
2
3
4
5
6
7
8
9
10
11
12
13
public class ForTest {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        
        int sum=0;
        for(int i=0;i<100;i+=2)
            sum = sum+i;
        
        System.out.println(sum);
            
    }
}
 
 

 

(4) do-while 문을 이용하여 동일하게 실행되는 DoWhileTest 클래스를 작성하라.

1
2
3
4
5
6
7
8
9
10
11
12
public class DoWhileTest {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int  sum=0, i=0;
        do {
            sum = sum + i;
            i +=2;
        } while (i < 100);
        System.out.println(sum);
    }
}
 
 

 

 

2. 다음 2차원 배열 n을 출력하는 프로그램을 작성하라.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class num_2 {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int n[][] = {{1}, {1,2,3}, {1}, {1,2,3,4}, {1,2}};
        
        for(int i=0;i<n.length;i++) {
            for(int j=0;j<n[i].length;j++) {
                System.out.print(n[i][j]+ " ");
            }
            System.out.println();
        }
    }
}
 
 

 

 

3. Scanner를 이용하여 정수를 입력받고 다음과 같이 *를 출력하는 프로그램을 작성하라. 다음은 5를 입력받았을 경우이다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import java.util.Scanner;
 
public class num_3 {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner sc = new Scanner(System.in);
        System.out.print("정수를 입력하시오>>");
        
        int num = sc.nextInt();
        
        for(int i=1;i<=num;i++) {
            for(int j=num;j>=i;j--) {
                System.out.print("*");
            }
            System.out.println();
        }
    }
}
 

 

 

4. Scanner를 이용하여 소문자 알파벳을 하나 입력받고 다음과 같이 출력하는 프로그램을 작성하라. 다음은 e를 입력받았을 경우이다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import java.util.Scanner;
 
public class num_3 {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner sc = new Scanner(System.in);
        System.out.print("소문자 알파벳 하나를 입력하시오>>");
        
        String s = sc.next();
        char c = s.charAt(0);
        
        for(int i=0;i<=c-'a';i++) {
            for(char j='a';j<=c-i;j++) {
                System.out.print(j);
            }
            System.out.println();
        }
    }
}
 
 

 

 

5. 양의 정수 10개 입력받아 배열에 저장하고, 배열에 있는 정수 중에서 3의 배수만 출력하는 프로그램을 작성하라.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import java.util.Scanner;
 
public class num_5 {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner sc = new Scanner(System.in);
        
        System.out.print("양의 정수 10개를 입력하시오>>");
        int arr[] = new int[10];
        
        for(int i=0;i<10;i++)
            arr[i] = sc.nextInt();
        
        System.out.print("3의 배수는 ");
        for(int i=0;i<10;i++)
            if(arr[i]%3==0)
                System.out.print(arr[i] + " ");
    }
}
 
 

 

 

6. 키보드에서 정수로 된 돈의 액수를 입력받아 오만 원권, 만 원권, 천 원권, 500원짜리 동전, 100원짜리 동전, 50원짜리 동전, 10원짜리 동전, 1원짜리 동전이 각 몇 개로 변환되는지 예시와 같이 출력하라. 단 이때 반드시 다음 배열과 반복문을 이용하여 작성하라.

int [] unit = {50000, 10000, 1000, 500, 100, 50, 10, 1};

 

금액을 입력하시오>>65123
50000원 짜리 : 1개
10000원 짜리 : 1개
1000원 짜리 : 5개
100원 짜리 : 1개
10원 짜리 : 2개
1원 짜리 : 3개
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import java.util.Scanner;
 
public class num_6 {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        
        Scanner sc = new Scanner(System.in);
        int unit[] = {5000010000100050010050101};
        
        System.out.print("금액을 입력하시오>>");
        int money = sc.nextInt();
        
        for(int i=0;i<unit.length;i++) {
            int zero_number = money/unit[i];
          
            if(zero_number!=0) {
                System.out.printf("%d원 짜리 : %d개\n", unit[i], zero_number);
                money = money%unit[i];
            }
        }
    }
}
 
 

 

 

7. 정수를 10개 저장하는 배열을 만들고 1에서 10까지 범위의 정수를 랜덤하게 생성하여 배열에 저장하라. 그리고 배열에 든 숫자들과 평균을 출력하라.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class num_7 {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        
        int sum=0;
        System.out.print("랜덤한 정수들 : ");
        
        for(int j=0;j<10;j++) {
            int i = (int)(Math.random()*10+1);
            System.out.print(i+" ");
            sum += i;
        }
        System.out.println();
        System.out.print("평균은 :" + sum/10.);
    }
}
 
 

 

 

8. 정수를 몇 개 저장할지 키보드로부터 개수를 입력받아(100보다 작은 개수) 정수 배열을 생성하고, 이곳에 1에서 100까지 범위의 정수를 랜덤하게 삽입하라. 배열에는 같은 수가 없도록 하고 배열을 출력하라.

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
import java.util.Scanner;
 
public class num_8 {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner sc = new Scanner(System.in);
        
        System.out.print("정수 몇개?");
        
        int num = sc.nextInt();
        int arr[] = new int[num];
        
        for(int i=0;i<arr.length;i++) {
            int r = (int)(Math.random()*100+1);
            int overlap = 0;
            
            for(int j=0;j<i;j++) {
                if(arr[i]==r){
                    overlap +=1;
                    break;
                }
            if (overlap !=0)
                continue;
            }
            arr[i] = r;
        }
        for(int i =0;i<arr.length;i++) {
            if(i%10==0 && i!=0)
                System.out.println();
            System.out.print(arr[i] + " ");
        }
    }
}
 
 

 

 

9. 4x4의 2차원 배열을 만들고 이곳에 1에서 10까지 범위의 정수를 랜덤하게 생성하여 정수 16개를 배열에 저장하고, 2차원 배열을 화면에 출력하라.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class num_9 {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        
        int arr[][] = new int[4][4];
        
        for(int i=0;i<arr.length;i++){
            for(int j=0;j<arr.length;j++){
                int r = (int)(Math.random()*10+1);
                arr[i][j]=r;
                System.out.print(arr[i][j] + "\t");
            }
            System.out.println();
        }
    }
}
 
 

 

10. 4x4의 2차원 배열을 만들고 이곳에 1에서 10까지 범위의 정수를 10개만 랜덤하게 생성하여 임의의 위치에 삽입하라. 동일한 정수가 있어도 상관없다. 나머지 6개의 숫자는 모두 0이다. 만들어진 2차원 배열을 화면에 출력하라.

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
public class num_10 {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        
        int arr[][] = new int[4][4];
        int rN=0//RandomNumber
        
        while(rN<10) {
            int x = (int)(Math.random()*4);
            int y = (int)(Math.random()*4);
            
            if(arr[x][y]==0) {
                arr[x][y] = (int)(Math.random()*10+1);
                rN +=1;
            }
        }
        
        for(int i=0;i<arr.length;i++){
            for(int j=0; j<arr.length;j++) {
                System.out.print(arr[i][j]+ " ");
            }
            System.out.println();
        }
    }
 
}
 
 

 

 

11. 다음과 같이 작동하는 Average.java를 작성하라. 명령 프롬포트로 읽어올 수 있도록 작성 (평균값 구하기)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class Average {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int sum=0;
        int count=0;
        
        for(int i=0;i<args.length;i++) {
            count++;
            sum+= Integer.parseInt(args[i]);
        }
        
        System.out.print(sum/count);
    }
}
 
 

 

 

12. Add.java 작성. 명령 프롬포트로 읽어올 수 있도록 작성(정수 값만 골라서 합을 구하기)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class Add {
    
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int sum=0;
        
        for(int i=0;i<args.length;i++) {
            try {
                sum+= Integer.parseInt(args[i]);
            }catch(NumberFormatException e) {
                continue;
            }
        }
        System.out.print(sum);
    }
}
 

 

 

13. 반복문을 이용하여 369게임에서 박수를 쳐야 하는 경우를 순서대로 화면에 출력해보자. (1~99까지)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class num_13 {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int count=1;
        
        for(int i=1;i<100;i++) {
            
            if(count%10==3 && count/10==3 || count%10==6 && count/10==6 ||
                    count%10==9 && count/10==9){
                System.out.printf("%d 박수 짝짝\n", i);
            }else if( count%10==3 || count%10==6 || count%10==9 ){
                System.out.printf("%d 박수 짝\n",i);
            }
            count++;
        }
    }
}
 
 

 

 

14. 다음 코드와 같이 과목과 점수가 짝을 이루도록 2개의 배열을 작성하라.

String course [] = {"Java", "C++", "HTML5", "컴퓨터구조", "안드로이드" };
int score [] = {95, 88, 76, 62, 52};

 

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
import java.util.Scanner;
 
public class num_14 {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
 
        Scanner sc =new Scanner(System.in);
        String course [] = {"Java""C++""HTML5""컴퓨터구조""안드로이드"};
        int score [] = {9588766255};
        
        while(true) {    
            System.out.print("과목 이름>>");
            String name = sc.next();
            
            if(name.equals("그만"))
                break;
            
            
            for(int i=0; i<course.length;i++) {
                if(course[i].equals(name)){
                    int n = score[i];
                    System.out.printf("%s의 점수는 %d\n", course[i], n);
                    break;
                }
                if(i==course.length-1)
                    System.out.println("없는 과목입니다.");
            }
        }
    }
}
 
 

 

 

15. 다음은 2개의 정수를 입력 받아 곱을 구하는 Multiply 클래스이다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import java.util.Scanner;
 
public class num_15 {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner sc = new Scanner(System.in);
        System.out.print("곱하고자 하는 두 수 입력>>");
        int n = sc.nextInt();
        int m = sc.nextInt();
        System.out.print(n + "x" + m + "=" + n*m );
        
        sc.close();
    }
}
 
 

위의 코드는 실수가 입력되면 예외가 발생된다.

try-catch에서 catch블록에 InputMismatchException을 넣어 작성하라.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import java.util.*;
 
public class num_15 {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner sc = new Scanner(System.in);
        
        while(true) {
            try {
                System.out.print("곱하고자 하는 두 수 입력>>");
                int n = sc.nextInt();
                int m = sc.nextInt();
                System.out.print(n + "x" + m + "=" + n*m );
                break;
            } catch (InputMismatchException e) {
                sc.nextLine();
                System.out.println("실수는 입력하면 안됩니다.");
            }
        }
        sc.close();
    }
}
 
 

 

 

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
import java.util.Scanner;
 
public class num_16 {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner sc = new Scanner(System.in);
        String str[] = {"가위""바위""보"};
        
        System.out.println("컴퓨터와 가위 바위 보 게임을 합니다.");
 
        while (true){
            System.out.print("가위 바위 보!>>");
            String text = sc.nextLine();
            
            int n = (int)(Math.random()*3);
            
            if(text.equals("그만")) {
                System.out.println("게임을 종료합니다...");
                break;
                }
            else if(str[n].equals("가위"))
                if(text.equals("가위"))
                    System.out.printf("사용자 = %s , 컴퓨터 = %s, 비겼습니다.\n", text, str[n]);
                else if(text.equals("바위"))
                    System.out.printf("사용자 = %s , 컴퓨터 = %s, 이겼습니다.\n", text, str[n]);
                else
                    System.out.printf("사용자 = %s , 컴퓨터 = %s, 졌습니다.\n", text, str[n]);
            else if(str[n].equals("바위"))
                if(text.equals("바위"))
                    System.out.printf("사용자 = %s , 컴퓨터 = %s, 비겼습니다.\n", text, str[n]);
                else if(text.equals("보"))
                    System.out.printf("사용자 = %s , 컴퓨터 = %s, 이겼습니다.\n", text, str[n]);
                else
                    System.out.printf("사용자 = %s , 컴퓨터 = %s, 졌습니다.\n", text, str[n]);
            else
                if(text.equals("보"))
                    System.out.printf("사용자 = %s , 컴퓨터 = %s, 비겼습니다.\n", text, str[n]);
                else if(text.equals("가위"))
                    System.out.printf("사용자 = %s , 컴퓨터 = %s, 이겼습니다.\n", text, str[n]);
                else
                    System.out.printf("사용자 = %s , 컴퓨터 = %s, 졌습니다.\n", text, str[n]);
        }        
    }
}
 
 

 

 


문제의 정답이 다르다 생각하시면 댓글로 피드백 부탁드립니다!

다음 포스팅 때 뵙겠습니다!

반응형