반응형
https://gist.github.com/parkground/019cb38b83bab7b85ebe8ab3cbf4f8a8
[Zero-base] 3주차 과제 (CoordinateCompare.java)
[Zero-base] 3주차 과제 (CoordinateCompare.java). GitHub Gist: instantly share code, notes, and snippets.
gist.github.com

/* CoordinateCompare.java */
import java.util.Scanner;
public class CoordinateCompare {
/* 나의 좌표 저장 변수 선언 */
static int myX, myY;
/* 입력 좌표 저장 배열 선언 */
static int[] inputX = new int[10];
static int[] inputY = new int[10];
/* 배열의 인덱스 접근을 위한 변수 선언 */
static int index;
/* 입력 좌표 임시 저장 변수 선언 */
static int tempX, tempY;
/* x, y 각 좌표 간 거리를 저장하는 배열 선언 */
static double[] dX = new double[10];
static double[] dY = new double[10];
/* 대각선 거리를 저장하는 배열 */
static double[] score = new double[10];
public static void main(String[] args) {
/* 나의 좌표를 입력 받는 함수 호출 */
MyCoordinate();
/* 임의의 좌표 값을 입력 받는 함수 호출 */
InputCoordinate();
/* 좌표별 거리 계산하는 함수 호출 */
CalculateDistance();
//Test printing
//각 좌표별 거리값 출력
for (int i = 0; i < score.length; i++) {
System.out.printf("(" + inputX[i] + ", " + inputY[i] + ") => " + score[i] +"\n");
}
/* 가장 작은 값을 찾아서 출력하는 함수 호출 */
SelectCoordinate();
}
/* 나의 좌표를 입력 받는 메소드 */
public static void MyCoordinate() {
Scanner scanner = new Scanner(System.in);
//나의 x좌표 입력
System.out.printf("나의 좌표 x값을 입력해주세요:");
myX = scanner.nextInt();
//나의 y좌표 입력
System.out.printf("나의 좌표 y값을 입력해주세요:");
myY = scanner.nextInt();
//입력된 나의 좌표 출력
System.out.println("나의 좌표 : (" + myX + ", " + myY + ")");
}
/* 임의의 좌표 값을 입력 받는 메소드 */
public static void InputCoordinate() {
Scanner scanner = new Scanner(System.in);
//첫번째(0)부터 열번째(9)까지 좌표 입력을 위한 반복문
for (index = 0; index < 10; index++) {
//첫번째 좌표 입력이 아닌 경우
if (index != 0) {
//입력 값을 비교하여 중복이 아닌 경우 저장하는 함수 호출
InputCompare();
}
//첫번째 좌표 입력인 경우
else if (index == 0) {
//첫번째 x좌표 입력
System.out.printf("1번째 좌표 x값을 입력해주세요: ");
inputX[0] = scanner.nextInt();
//첫번째 y좌표 입력
System.out.printf("1번째 좌표 y값을 입력해주세요: ");
inputY[0] = scanner.nextInt();
//Test printing
//입력받은 첫번째 좌표 값을 출력
System.out.printf("1번째 좌표 : (" + inputX[0] + ", " + inputY[0] + ") \n");
}
}
//입력된 좌표 10개 출력
System.out.printf("입력된 좌표 : ");
for (int i = 0; i < 9; i++) {
System.out.printf("(" + inputX[i] + ", " + inputY[i] + "), ");
}
System.out.printf("(" + inputX[9] + ", " + inputY[9] + ")\n");
}
/* 입력 값을 비교하는 메소드 */
public static void InputCompare() {
Scanner scanner = new Scanner(System.in);
//n번째 x좌표 입력받아 임시 변수에 저장
System.out.printf((index + 1) + "번째 좌표 x값을 입력해주세요: ");
tempX = scanner.nextInt();
//n번째 y좌표 입력받아 임시 변수에 저장
System.out.printf((index + 1) + "번째 좌표 y값을 입력해주세요: ");
tempY = scanner.nextInt();
//이전 입력값들과 비교하여 중복값을 찾는 반복문
for (int i = index; i >= 0; i--) {
if ((tempX == inputX[i]) && (tempY == inputY[i])) {
System.out.println("동일한 좌표값이 이미 존재합니다. 다시 입력해 주세요.");
index--;
break;
}
//중복값이 없는 경우 입력된 임시 변수 값을 좌표 값 배열에 저장
inputX[index] = tempX;
inputY[index] = tempY;
}
//Test printing
//현재 입력받은 좌표 값을 출력
System.out.printf((index + 1) + "번째 좌표 : (" + inputX[index] + ", " + inputY[index] + ") \n");
}
/* 좌표별 거리 계산하는 메소드 */
public static void CalculateDistance() {
//반목문을 이용하여 개별 좌표간의 거리를 계산
for (int i = 0; i < 10; i++) {
dX[i] = (double) (myX - inputX[i]);
dY[i] = (double) (myY - inputY[i]);
//피라고라스 정리를 이용하여 각 좌표별 대각선 거리측정
score[i] = Math.sqrt((dX[i] * dX[i]) + (dY[i] * dY[i]));
}
}
/* 가장 작은 값을 찾는 메소드 */
public static void SelectCoordinate() {
//최소값을 찾기 위한 변수 선언
double min = score[0];
//찾은 최소값의 인덱스를 확인하기 위한 변수 선언
int minIndex = 0;
//반복문을 사용하여서 최소값과 해당하는 인덱스를 찾음
for (int i = 0; i < score.length; i++) {
if (min > score[i]) {
min = score[i];
minIndex = i;
}
}
//나와 가장 가까운 좌표값 출력
System.out.printf("제일 가까운 좌표값 :\n(" + inputX[minIndex] + ", " + inputY[minIndex] + ") => " + score[minIndex] + "\n");
}
}

반응형
'cs > java-spring-boot' 카테고리의 다른 글
| [Zero-base] 3-3. 오버라이딩과 오버로딩 (0) | 2022.01.26 |
|---|---|
| [Zero-base] 3-2. 다형성 (0) | 2022.01.26 |
| [Zero-base] 3-1. 상속 (0) | 2022.01.23 |
| [Zero-base] 2-5. static과 final 그리고 배열 (0) | 2022.01.23 |
| [Zero-base] 2주차 과제 (JavaSystemProperty.java) (0) | 2022.01.21 |