본문 바로가기
Programming Study/명품자바프로그래밍

[명품자바프로그래밍] 6장 실습문제(1)

by 푸고배 2018. 9. 20.

1. 다음 main() 메소드의 실행 결과 "MyPoint(3,20)"이 출력되도록 MyPoint 클래스를 작성하라. 

public static void main(String[] args) {

Mypoint a = new MyPoint(3,20);

System.out.print(a);

}

<소스코드> Chapter6_1.java

class MyPoint{
	int a;
	int b;
	MyPoint(int x, int y){
		a=x;
		b=y;
	}
	public String toString(){
		return "MyPoint("+a+","+b+")";
	}
}
public class Chapter6_1 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		MyPoint a =new MyPoint(3,20);
		System.out.println(a);
	}

}

 

2. Math.random() 메소드를 이용하여 10에서 50사이의 난수 10개를 화면에 출력하는 프로그램을 작성하라. 

<소스코드> Chapter6_2.java

public class Chapter6_2 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int num;
		for(int i=0;i<10;i++){
			num = (int) (Math.random()*41+10);// (0+10)~(40+10)
			System.out.println(num);
		}
	}

}

 

3. Calendar 클래스를 이용하여 현재 시간에 따라 새벽 4시에서 낮 12시 이전이면 "Good Morning", 오후 6시 이전이면 "Good Afternoon", 밤 10시 이전이면 "Good Evening", 그 이후는 "Good Night"을 출력하는 프로그램을 작성하라. 

<소스코드> Chapter6_3.java

import java.util.Calendar;

public class Chapter6_3 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Calendar cal = Calendar.getInstance();
		int hour = cal.get(Calendar.HOUR_OF_DAY);
		if(hour<12&&hour>=4){
			System.out.println("Good Morning");
		} else if(hour>=12&&hour<18){
			System.out.println("Good Afternoon");
		} else if(hour>=18&&hour<22){
			System.out.println("Good Evening");
		} else {
			System.out.println("Good Night");
		}
	}

}

 

 

4. int 타입의 x, y, radius 필드를 가지는 Circle 클래스를 작성하라. equals() 메소드를 재정의하여 두 개의 Circle 객체의 반지름이 같으면 두 Circle 객체가 동일한 것으로 판별하도록 하라. Circle 클래스의 생성자는 3개의 인자를 가지며 x, y, radius 필드를 인자로 받아 초기화한다. 

<소스코드> Chapter6_4.java

class Circle{
	int x;
	int y;
	int radius;
	public Circle(int x, int y, int radius) {
		// TODO Auto-generated constructor stub
		this.x=x;
		this.y=y;
		this.radius=radius;
	}
	public boolean equals(Circle obj) {
		return this.radius == obj.radius;
	}
}
public class Chapter6_4 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Circle c1 = new Circle(1, 1, 2);
		Circle c2 = new Circle(3, 2, 3);
		Circle c3 = new Circle(4, 6, 2);
		if(c1.equals(c2)){
			System.out.println("c1과 c2는 같다.");
		} else {
			System.out.println("c1과 c2는 다르다.");
		}
		if(c1.equals(c3)){
			System.out.println("c1과 c3는 같다.");
		} else {
			System.out.println("c1과 c3는 다르다.");
		}
	}

}

 

 

5. "They is students." 스트링에서 "is"를 "are"로 대치하는 StringSub 클래스를 작성하라. 실행은 다음과 같이 한다. 

<소스코드> Chapter6_5.java

public class StringSub {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String str = "They is students.";
		int i=0;
		for(;i<str.length();i++){
			if(str.charAt(i)=='i')
				if(str.charAt(i+1)=='s'){
					break;
				}
		}
		StringBuffer sb = new StringBuffer(str);
		sb.replace(i, i+2, "are");
		System.out.println(sb);
	}

}

 

 

6. ctrl-z가 입력될 때까지 키보드로부터 영어 문자를 읽고 그 속에 대문자가 몇 개 있는지 판별하는 프로그램을 작성하라(Open Challenge의 힌트를 참고하라). 

<소스코드> Chapter6_6.java

import java.io.IOException;
import java.io.InputStreamReader;

public class Chapter6_6 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		InputStreamReader rd = new InputStreamReader(System.in);
		int count=0;
		try {
			while(true) {
				int c = rd.read(); // ctrl-z가 안먹혀서 Enter로 변경
				if(c==13) // Enter 입력시 종료
					break;
				if((char)c>='A'&&(char)c<='Z') {
					count++;
				}
			}
			System.out.println(count);
		} catch(IOException e) {
			System.out.println("입력 오류 발생");
		}
	}

}

 

참고자료 : 생능출판 명품 JAVA Programming

github 주소 : https://github.com/ch1517/Masterwork-JAVA-Programming/tree/master/Chapter6/Chapter6

 

반응형

댓글