본문 바로가기
Programming/JAVA

패키지 개념과 자바 기본 패키지

by 안녕주 2020. 10. 16.

명품자바프로그래밍 Chapter6_Lab05

실습2| Circle 클래스 작성 

public class Circle { 
	private int x;
	private int y;
	private int radius;

	Circle(int x, int y, int radius) { // 3개의 인자를 받아 생성자 생성해 필드를 초기화
		this.x = x;
		this.y = y;
		this.radius = radius;
	}

	@Override
	public String toString() { //toString()은 출력 결과에 맞게 재정의한다.
		return "Circle (" + x + "," + y + ") 반지름" + radius;
	}
	
	//Object 클래스 : 모든 클래스의 수퍼 클래스
	public boolean equals(Object o) { //Object 클래스로 업캐스팅된 상태 o는 모든 멤버에 접근 불가능
		Circle p = (Circle)o; //circle 클래스로 다운 캐스팅
		if (x==p.x && y==p.y) // 해당 원과 매개변수로 받아온 원의 중심이 같으면
			return true; //true를 반환
		else
			return false; //하나라도 다를 경우 false 반환
	}
	
}

 

실습4| app 패키지에 분리하여 클래스 작성  (Shape, Circle2, GraphicEditor)

package base;

public class Shape {
	public void draw() {
		System.out.println("Shape");
	}
}
package derived;
import base.Shape;

public class Circle2 extends Shape{
	public void draw() {
		System.out.println("Circle");
	}
}
package app;

import base.Shape;
import derived.Circle2;

public class GraphicEditor {
	public static void main(String[] args) {
		Shape shape = new Circle2();
		shape.draw();
	}
}

 

실습8| 문자열 회전 프로그램

import java.util.Scanner;

public class StringRotate {

	public static void main(java.lang.String[] args) {
		Scanner scanner = new Scanner(System.in);
		System.out.println("문자열을 입력하세요. 빈 칸이나  있어도 되고 영어 한글 모두 됩니다.");
		String letter = scanner.nextLine(); //  nextLine()메소드 사용해 Enter를 쓰기 전 문자열을 받는다. 공백도 포함
		
		for(int i =0; i<letter.length();i++) { //입력한 문자열만큼 반복해서 rotate
			String first = letter.substring(0,1); // letter의 첫번째(0번)문자 1개를 문자열 first에 저장 (0번부터 가져오는데 1개 가져온다.)
			String last = letter.substring(1); //letter의 두번째(1번)문자 부터 마지막 문자까리 문자열 last에 저장 (1번부터 가져오는데, 다 가져온다.)
			// substring(읽어드릴 문자열의 시작번호, 읽어들일 문자열의 개수) 문자열의 개수는 생략 가능하며, 생략하는 경우 문자열 마지막까지 읽는다는 뜻이다. 
			letter = last + first; //letter에 각 추출된 문자열이 rotate되도록 last와 first를 붙여준다.
			System.out.println(letter);
		}
		scanner.close();
	}

}

 

실습10 | 갬블링 게임

import java.util.Scanner;

public class GamblingGame {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		
		System.out.print("1번째 선수 이름>> "); // 첫번째  Person객체 생성
		Person user1= new Person(scan.next()); //scan.next()메소드 이용
				
		System.out.print("2번째 선수 이름>> "); // 두번째  Person객체 생성
		Person user2= new Person(scan.next()); //scan.next()메소드 이용
		
		while(true)
		{	
			if (user1.Play()) { // if문을 판단하려면 user1.play()를 호출해와서 진행해야한다.
				System.out.println (user1.getUser() + "님이 이겼습니다!"); //Person객체의 접근자를 사용해 출력
				break;
			}
			System.out.println("아쉽군요!"); //if user1.Play() 가 false일 경우 출력
			
			if (user2.Play()) { //다음으로 두번째 user의 user2.Play()를 호출해서 진행한다.
				System.out.println (user2.getUser() + "님이 이겼습니다!"); //Person객체의 접근자를 사용해 출력
				break;
			}
			System.out.println("아쉽군요!");//if user2.Play() 가 false일 경우 출력
			
			//두개의 if문을 차례로 진행하면서 break가 나오지 않았으므로 while문이 계속 반복된다.
		}
		scan.close();
	}
}

 

실습12 |  갬블링게임 2

import java.util.Scanner;

public class GamblingGame2 {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		
		System.out.print("갬블링 게임에 참여할 선수 숫자>>");
		int user_num = scan.nextInt(); //참여할 선수를 정수형으로 받는다.
		Person [] p = new Person[user_num]; //참여하는 선수 숫자 만큼 Person객체 배열 생성
		
		for(int i =0 ;i<user_num; i++) { //입력받은 선수 명수 만큼 이름을 입력받는다.
			System.out.print((i+1)+"번째 선수 이름>>"); //인덱스는 0부터 시작하지만 사람들이 볼때는 1번째 선수인거처럼 i+1을 해서 출력한다.
			p[i] = new Person(scan.next()); //해당 번째 선수의 이름을 각각 해당 인덱스의 user로 생성. 
		}
		
		int j =0; // 참여하는 선수 가 rotaion이 필요하기 때문에 j 선언 
		while(true) {
			if (p[j].Play()) { //if문 실행을 위해 p[j].Play() 호출해서 실행. 그 값이 true면 
				System.out.println (p[j].getUser() + "님이 이겼습니다!"); //게임 끝 , Person객체의 접근자를 사용해 출력
				break; //While문 탈출
			}
			else { //호출결과 false면
				System.out.println("아쉽군요!"); //게임 계속 진행
				j++; //j++를통해 다음번째 선수가 진행되도록 인덱스를 증가 시킨다.
				j = j % user_num; //j가 끊임없이 증가하면 roatation이 불가함으로, 번갈아 가면서 게임이 진행되도록 j = j % user_num을 해준다.
			}
		}
		scan.close();
	}
}

'Programming > JAVA' 카테고리의 다른 글

입출력 스트림과 파일 입출력  (0) 2020.10.16
제너릭과 컬렉션  (0) 2020.10.16
상속  (0) 2020.10.16
클래스와 객체  (0) 2020.10.16
반복문과 배열 그리고 예외 처리  (0) 2020.09.08

댓글