본문 바로가기
각종 언어 기본 문법/Java 이것이 자바다 확인 문제 풀이

이것이 자바다 확인 문제 풀이 5장, 챕터5, Chapter5

by 혀니쌤1 2021. 8. 8.

목차

    [신용권의 이것이 자바다 챕터 4 조건문과 반복문 확인 문제 풀이]

     

    ■ 문제1 답 : 4번

    ① ㅇㅇ. 참조 타입에는 배열, 열거, 클래스, 인터페이스가 있다.

    ② ㅇㅇ. 참조 타입 변수는 스택에 생성되며, 변수가 참조하는 객체가 힙에 생성된다. 

    ③ ㅇㅇ. 참조 타입에서 비교 연산은 주소값 비교이다.

    ④ ㄴㄴ. 참조 타입은 null 값으로 초기화 할 수 있다. 아직 참조할 게 없다는 뜻.

     

     

     

    ■ 문제2 답 : 3번

    ① ㅇㅇ. 로컬 변수는 스택에 생성되고 코드 블록이 끝나면 지워진다

    ② ㅇㅇ. 메소드 코드, 상수, 열거 상수는 정적 메소드 영역에 생성된다. (변수가 스택, 객체가 힙)

    ③ ㄴㄴ. JVM이 알아서 가비지 콜랙터로 지워버리니, 개발자가 굳이 코드 짤 수고 불필요

    ④ ㅇㅇ. 배열 및 객체는 힙에 생성된다.

     

     

     

    ■ 문제3 답 : 2번

    ① ㅇㅇ. String은 클래스이므로 참조타입이다.

    ② ㄴㄴ. 주소 비교하면 ==로하고, letter by letter 비교하려면 equals() 써야한다.

    ③ ㅇㅇ. 동일한 *리터럴*이라면 (new 안쓰고) 동일한 String 객체이다.

    ④ ㅇㅇ. new쓰면 그렇지. 다른 객체 생성하지요.

     

     

     

    ■ 문제4 답 : 2번

    값목록을 주려면 선언과 동시에 초기화 해야하지, 두 줄 이상으로 나눠 작성하면 안된다. 아니면 new를 쓰던가.

    int[] array; array = new int[] {1,2,3}  또는  int[] array = {1,2,3} 으로 해야한다.

     

     

     

    ■ 문제5 답 : 3번

    boolean type 배열의 초기값은 false이다.

     

     

     

    ■ 문제6 답 : 3, 5

    array.length()만 하면 행수를 새니까 3. array[2].length()로 하면 2번째 줄의 크기를 재는거니까 5.

     

     

     

    ■ 문제7 답 (아래 참고, 향상된 포문과, ?를 사용한 if 조건문을 활용해 보았음.)

    public class  Ex07 {
    	public static void main(String[] args) {
    		int max = 0;
    		int[] arr = {1,5,3,8,2};
    		for (int ii:arr) {
    			max = (ii>max)? ii:max;
    		}
    		System.out.println(max);
    	}
    }

     

     

    ■ 문제8 답

    public class  Ex08 {
    	public static void main(String[] args) {
    		int[][] array = { 
    				{95, 86},
    				{83, 92, 96},
    				{78, 83, 93, 87, 88}
    		};	
    		int sum = 0;
    		double avg = 0.0;
    		
    		int cnt = 0;
    		for (int ii=0; ii<array.length; ii++) {
    			for (int jj=0; jj<array[ii].length; jj++) {
    				sum += array[ii][jj];
    				cnt++;
    			}
    		}
    		avg = 1.0*sum/cnt;
    		System.out.println("sum: " + sum);
    		System.out.println("avg: " + avg);	
    	}
    }

     

     

    ■ 문제 9 답:

    import java.util.Scanner;
    
    public class Ex09 {
    	public static void main(String[] args) {
    		boolean run = true;		
    		
    		int studentNum = 0;
    		int[] scores = null;
    		
    		Scanner scanner = new Scanner(System.in);
    		
    		while(run) {
    			System.out.println("--------------------------------------------------------------");
    			System.out.println("1.학생수 | 2.점수입력 | 3.점수리스트 | 4.분석 | 5.종료");
    			System.out.println("--------------------------------------------------------------");
    			System.out.print("선택> ");
    			
    			int selectNo = scanner.nextInt();
    			
    			if(selectNo == 1) {
    				System.out.print("학생수> ");
    				studentNum = scanner.nextInt();
    				scores = new int[studentNum];
    			} else if(selectNo == 2) {
    				for(int i=0; i<scores.length; i++) {
    					System.out.print("scores[" + i + "]> ");
    					scores[i] = scanner.nextInt();
    				}
    			} else if(selectNo == 3) {
    				for(int i=0; i<scores.length; i++) {
    					System.out.println("scores[" + i + "]: " + scores[i]);
    				}
    			} else if(selectNo == 4) {
    				int max = 0;
    				int sum = 0;
    				double avg = 0;
    				for(int i=0; i<scores.length; i++) {
    					max = (max<scores[i])? scores[i] : max;
    					sum += scores[i];
    				}
    				avg = (double) sum / studentNum;
    				System.out.println("최고 점수: " + max);
    				System.out.println("평균 점수: " + avg);
    			} else if(selectNo == 5) {
    				run = false;
    			}
    		}	
    		
    		System.out.println("프로그램 종료");
    	}
    }