JAVA/연습문제

쉽게 배우는 자바 프로그래밍 2판 9장 프로그래밍 문제 Part.2 (6번 ~ 7번)

세언이 2022. 11. 1. 16:06
반응형

# 개발 공부하는 초보자가 작성한 답안이니 정답이 아닐 수 있습니다!!!

 

 

 

6. Max 클래스는 제네릭 클래스로 인수가 숫자라면 큰 수를 반환하고 숫자가 아니라면 긴 문자열을 반환하는 max() 메서드를 포함한다. 다음 프로그램과 실행 결과를 참고해 제네릭 클래스 Max를 작성하라. 단, max()의 인수는 숫자 혹은 문자열이라고 가정한다.

📢주어진 조건1📢
객체를 비교할 때 >와 같은 비교 연산자는 사용할 수 없다. Number 객체에서 정숫값이나 실숫값을 얻으려면
intValue()나 doubleValue() 메서드를 호출한다.
📢주어진 조건2📢
public class MaxTest { 
    public static void main(String[] args) { 
        Max<Number> n = new Max<>(); 
        System.out.println(n.max(10.0, 8.0)); 
        System.out.println(n.max(5, 8.0)); 
        
        Max<String> s = new Max<>(); 
        System.out.println(s.max("Hello", "Hi")); 
        System.out.println(s.max("Good", "moring")); 
    } 
}
📢주어진 결과값📢
10.0
8.0
Hello
morning
🧤정답🧤
public class MaxTest { 
    public static void main(String[] args) { 
        Max<Number> n = new Max<>(); 
        System.out.println(n.max(10.0, 8.0)); 
        System.out.println(n.max(5, 8.0)); 
        Max<String> s = new Max<>(); 
        System.out.println(s.max("Hello", "Hi")); 
        System.out.println(s.max("Good", "moring")); 
    } 
}

public class Max <Object> { 
    String s1, s2; 
    double n1, n2; 
    public Object max (Object ns1, Object ns2) { 
        if (ns1 instanceof Number) { 
            n1 = ((Number) ns1).doubleValue(); 
            n2 = ((Number) ns2).doubleValue(); 
            return (n1>n2) ? ns1 : ns2; 
        } 
        else { 
            s1 = (String) ns1; 
            s2 = (String) ns2; 
            return (s1.length()>s2.length()) ? ns1 : ns2; 
        } 
    } 
}

 

 

7. Box라는 제네릭 클래스는 어떤 객체라도 보관할 수 있고 끄집어낼 수 있다. 다음 프로그램과 실행 결과를 참고해 Box 클래스를 작성하라.

📢주어진 조건📢
public class BoxTest { 
    public static void main(String[] args) { 
        Box<Integer> i = new Box<>(); 
        // 오토박싱으로 그냥 100을 써도 무방한듯 
        i.set(new Integer(100)); 
        System.out.println(i.get()); 
        
        Box<String> s = new Box<>(); 
        s.set("만능이네!"); 
        System.out.println(s.get()); 
    } 
}
📢주어진 결과값📢
100
만능이네!
🧤정답🧤
public class BoxTest { 
    public static void main(String[] args) { 
        Box<Integer> i = new Box<>(); 
        // 오토박싱으로 그냥 100을 써도 무방한듯 
        i.set(new Integer(100)); 
        System.out.println(i.get()); 
        Box<String> s = new Box<>(); 
        s.set("만능이네!"); 
        System.out.println(s.get()); 
    } 
} 

public class Box <Object> { 
    Object random; 
    public void set (Object random) { 
        this.random = random; 
    } 
    
    public Object get() { 
        return  random; 
    } 
}

 

 

반응형