문제
점을 클래스로 표현하는 문제입니다 이를 해결하는 다음 프로그램을 해석하세요
점의 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키(다음)를 눌러도 확인할 수 있습니다