JAVA 프로그래밍

문제

점을 클래스로 표현하는 문제입니다 이를 해결하는 다음 프로그램을 해석하세요 
점의 x좌표 값을 입력하세요 : 3
점의 y좌표 값을 입력하세요 : 4
(0,0)과 (3,4) 사이의 거리는 5.0입니다 

점의 x좌표 값을 입력하세요 : 0
점의 y좌표 값을 입력하세요 : 0
이 점은 원점입니다 

점의 x좌표 값을 입력하세요 : 6
점의 y좌표 값을 입력하세요 : 8
(0,0)과 (6,8) 사이의 거리는 10.0입니다 

알고리즘

 프로그램 시작 
   먼저 점의 좌표값 입력
   좌표값을 바탕으로 원점과 입력점의 객체 생성
   원점과 입력점 사이의 차이 출력
프로그램 종료

XYpoint 클래스
   점의 좌표값을 초기화
   점을 문자열 (x,y)로 표현
   두 점이 같은지 비교
   두 점 사이의 거리를 계산

프로그램 코드

	// 파일명 : ./Chapter11/XYpoints.java
	import java.util.Scanner;
	import java.lang.Math;
 
	// XYpoint 클래스 
	class XYpoint
	{
		private int x, y;
		 
		// 점의 좌표값을 초기화 	
P1b		public XYpoint( int x, int y ) {
			this.x = x;
			this.y = y;
P1e		}
		 
P2b		public XYpoint() {
P21			this( 0, 0 );
P2e		}
	 
		// 점을 문자열 (x,y)로 표현 	
P3b		public String toString() {
			return "(" + this.x + "," + this.y + ")";
P3e		}
	 
		// 두 점이 같은지 비교	
P4b		public boolean equals( XYpoint that ) {
			return ( this.x == that.x ) && ( this.y == that.y );
P4e		}
	 
		// 두 점 사이의 거리를 계산 	
P5b		public double compareTo( XYpoint that ) {
			return Math.sqrt( Math.pow( ( this.x - that.x ), 2 ) + Math.pow( ( this.y - that.y ), 2 ) );
P5e		}
	}
		 
	public class XYpoints
	{
		// 프로그램 시작 
1		public static void main( String[] args ) {
			Scanner scan = new Scanner( System.in );
			 
			// 먼저 점의 좌표값 입력	
			System.out.print( "점의 x좌표 값을 입력하세요 : " );
			int x = scan.nextInt();
			System.out.print( "점의 y좌표 값을 입력하세요 : " );
			int y = scan.nextInt();
	 
			// 좌표값을 바탕으로 원점과 입력점의 객체 생성 		
2			XYpoint origin =
3			               new XYpoint();
4			XYpoint point =
5			               new XYpoint( x, y );
	 
			// 원점과 입력점 사이의 차이 출력 
6			if ( origin.equals( point ) ) {
7				System.out.println( "이 점은 원점입니다" );
			}
8			else {
				System.out.println(
9				                    origin + "과 "
10				                     + point + " 사이의 거리는 "
11				                     + point.compareTo( origin ) + "입니다" );
			}
			 
			scan.close();
		// 프로그램 종료 
12		}
	}

실행 순서

 
 					※ 실행순서 및 메모리상태는 A키(이전) 및 D키(다음)를 눌러도 확인할 수 있습니다