본문 바로가기
Programming Study/절대JAVA

[절대JAVA]7장 프로그래밍 연습문제(1)

by 푸고배 2018. 9. 24.

1. 다음 조건을 만족하는 클래스 Person을 구현하여 테스트하는 프로그램을 작성하시오.

- 클래스 Person은 이름을 저장하는 필드 구성

- 클래스 Person은 상위 클래스 Object의 메소드 equals()를 오버라이딩하여 이름이 같으면 true를 반환하는 메소드 구현

- 다음과 같은 소스로 클래스 Person을 점검

Person p1 = new Person("홍길동");

System.out.println(p1.equals(new Person("홍길동")));

System.out.println(p1.equals(new Person("최명태")));

<소스코드>

Person.java

package Chapter7_1;

public class Person {
	String name; // 이름
	Person(String name){
		this.name = name;
	}
	public boolean equals(Person p) {
		if(this.name.equals(p.name)) {
			return true;
		}
		else {
			return false;
		}
	}
}

Chapter7_1.java

package Chapter7_1;

public class Chapter7_1 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Person p1 = new Person("홍길동");
		System.out.println(p1.equals(new Person("홍길동")));
		System.out.println(p1.equals(new Person("최명태")));
	}

}

 

 

2. 다음 조건을 만족하도록 8개의 랩퍼 클래스 객체를 처리하는 프로그램을 작성하시오.

- 박싱 기능을 사용하여 8개의 랩퍼 클래스의 객체를 생성

- 언박싱 기능과 메소드 printf()를 사용하여 위 객체를 그대로 출력

<소스코드>

Chapter7_2.java

package Chapter7_2;

public class Chapter7_2 {
	static void printf(Object o) {
		System.out.println(o);
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Byte b1 = 1;
		Short s = 2;
		Integer i = 3;
		Long l = 4l;
		Float f = 5f;
		Double d = 6.0;
		Character c = 'a';
		Boolean b2 = true;
		
		Chapter7_2.printf(b1);
		Chapter7_2.printf(s);
		Chapter7_2.printf(i);
		Chapter7_2.printf(l);
		Chapter7_2.printf(f);
		Chapter7_2.printf(d);
		Chapter7_2.printf(c);
		Chapter7_2.printf(b2);
	}

}

 

 

3. 다음 조건을 만족하는 클래스 String의 객체 이용 프로그램을 작성하여 메소드 equals()와 연산자 ==의 차이를 비교 설명하시오. 

- 메소드 equals()와 비교 연산자 ==의 차이를 다음 소스로 점검

String s1 = new String("java");

String s2 = new String("java");

String s3 = s2;

 

System.out.println(s1 == s2);

System.out.println(s1.equals(s2));

System.out.println(s2 == s3);

System.out.println(s2.equals(s3));

<소스코드>

Chapter7_3.java

package Chapter7_3;

public class Chapter7_3 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String s1 = new String("java");
		String s2 = new String("java");
		String s3 = s2;
		
		System.out.println(s1 == s2); // s2와 s1은 주소가 다르므로 false
		System.out.println(s1.equals(s2)); // s1와 s2의 값이 같으므로 true
		System.out.println(s2 == s3); // s3은 s2와 같은 객체를 가르키고 있으므로 주소가 같음 true
		System.out.println(s2.equals(s3)); // s2와 s3의 값이 같으므로 true
	}

}

 

 

4. 다음 조건을 만족하도록 표준입력으로 년, 월, 일을 입력 받아 요일을 출력하는 프로그램을 작성하시오.

- 클래스 Calendar를 사용

<소스코드>

Chapter7_4.java

package Chapter7_4;

import java.util.Calendar;
import java.util.Scanner;

public class Chapter7_4 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner input = new Scanner(System.in);
		int year;
		int month;
		int date;
		String d;
		
		System.out.print("년도를 입력하시오 : ");
		year = input.nextInt();
		System.out.print("월을 입력하시오 : ");
		month = input.nextInt();
		System.out.print("일을 입력하시오 : ");
		date = input.nextInt();
		
		Calendar cal = Calendar.getInstance();
		cal.set(Calendar.YEAR, year);
		cal.set(Calendar.MONTH, month-1);
		cal.set(Calendar.DATE, date);
		
		switch(cal.get(Calendar.DAY_OF_WEEK)) {
			case 1:
				d="일요일";
				break;
			case 2:
				d="월요일";
				break;
			case 3:
				d="화요일";
				break;
			case 4:
				d="수요일";
				break;
			case 5:
				d="목요일";
				break;
			case 6:
				d="금요일";
				break;
			default:
				d="토요일";
				break;
		}
		

		System.out.println(d);
		
	}

}

 

 

5. 다음 조건을 만족하도록 오늘의 정보를 출력하는 프로그램을 작성하시오.

- 클래스 Calendar의 객체의 다음 메소드를 사용하며

 * get(Calendar.DAY_OF_WEEK_IN_MONTH) : 달에서 요일의 횟수 반환

 * get(Calendar.DAY_OF_WEEK) : 요일을 반환, 1이 일요일

 * get(Calendar.WEEK_OF_MONTH) : 월의 주 횟수를 반환

 * get(Calendar.DAY_OF_YEAR) : 해의 날짜를 반환

 * get(Calendar.WEEK_OF_YEAR) : 해의 주 횟수를 반환

- 다음과 같이 출력되도록 한다.

오늘은 2012년 6월 17일 일요일입니다.

이 달의 3번째 일요일입니다.

이 달의 4번째 주입니다.

이 해의 169일입니다.

이 해의 25번째 주입니다. 

<소스코드>

Chapter7_5.java

 

package Chapter7_5;

import java.util.Calendar;

public class Chapter7_5 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Calendar cal = Calendar.getInstance();
		int year = cal.get(Calendar.YEAR);
		int month = cal.get(Calendar.MONTH)+1;
		int date = cal.get(Calendar.DATE);
		String d;
		
		switch(cal.get(Calendar.DAY_OF_WEEK)) {
		case 1:
			d="일요일";
			break;
		case 2:
			d="월요일";
			break;
		case 3:
			d="화요일";
			break;
		case 4:
			d="수요일";
			break;
		case 5:
			d="목요일";
			break;
		case 6:
			d="금요일";
			break;
		default:
			d="토요일";
			break;
	}
	
		System.out.println("오늘은 "+year+"년 "+month+"월 "+date+"일 "+ d+"입니다.");
		System.out.println("이 달의 "+cal.get(Calendar.DAY_OF_WEEK_IN_MONTH)+"번째"+d+"입니다.");
		System.out.println("이 달의 "+cal.get(Calendar.WEEK_OF_MONTH)+"번째 주입니다.");
		System.out.println("이 해의 "+cal.get(Calendar.DAY_OF_YEAR)+"일입니다.");
		System.out.println("이 해의 "+cal.get(Calendar.WEEK_OF_YEAR)+"번째 주입니다.");
	}

}

 

참고자료 : 인피니티북스 절대 JAVA

github 주소 : 

https://github.com/ch1517/Network-programming/tree/master/Chapter7

반응형

댓글