프로그래밍 배운지 한달째 되는 학생입니다.
(50,50), (100,100) 을 잇는 선분을 대각선으로 가지는 직사각형을 네개로 쪼개서 입력한 사각형과 각 구역에서 얼만큼 겹치는 지 계산하는 프로그램입니다.


import java.util.Arrays;
import java.util.Scanner;

public class Size {
    public static void main(String[] args) {
        while(true) {
            int a, b, c, d;//a,b는 세로 축, c,d 는 가로 축이다.
            int i, j, m, n;//반복문의 인자들
            int result;// 사각형의 넓이 결과값

            System.out.println(\"사각형은 다음과 같이 나눠집니다.\");
            System.out.println(\"( 2-1 구역 2-2 구역 )\");
            System.out.println(\"( 1-1 구역 1-2 구역 )\");

            Scanner scanner = new Scanner(System.in);

            System.out.println(\"이차원 평면 위의 정수 좌표를 가지는 두 점을 입력해주세요.\");
            System.out.print(\"첫번 째 점의 x,y 좌표 : \");
            a = scanner.nextInt();
            c = scanner.nextInt();
            System.out.print(\"두번 째 점의 x,y 좌표 : \");
            b = scanner.nextInt();    //a,b가 세로축 (엑스 함수)
            d = scanner.nextInt();    //c,d는 가로축 (와이 함수)

            if (a == b || c == d) {
                System.out.println(\"입력하신 도형은 사각형이 아닙니다\");
                System.exit(0);//메인함수 종료
            }// 사각형인지 직선인지 유무 판단
            if (b < a)//b가 a보다 커야한다.
            {
                a = a ^ b;
                b = a ^ b;
                a = a ^ b;    //xor 을 사용한 교체연산
            }
            if (d < c) //d가 c 보다 커야한다.
            {
                c = c ^ d;
                d = c ^ d;
                c = c ^ d;
            }
// 여기까지가 준비단계 (변수입력, 사각형 유무 판단, 변수 크기순 정렬)
            for (i = 2, j = 3; i < 4; i++, j++) {
                for (m = 2, n = 3; m < 4; m++, n++) {
                    int Array1[] = {a, b, 25 * m, 25 * n};//m은 왼쪽 세로줄 n은 오른쪽 세로줄
                    int Array2[] = {c, d, 25 * i, 25 * j};//i는 아래쪽 가로줄 j는 위쪽 세로줄
                    if (Array1[1] < Array1[2])
                        continue;
                    if (Array2[1] < Array2[2])
                        continue;
                    if (Array1[3] < Array1[0])
                        continue;
                    if (Array2[3] < Array2[0])
                        continue;                 //겹치지 않는 경우들은 반복문을 탈출하여 결과값을 출력하지 않는다.
                    Arrays.sort(Array1);
                    Arrays.sort(Array2);       //배열의 인자들을 크기순대로 나열한다.
                    result = (Array1[2] - Array1[1]) * (Array2[2] - Array2[1]);
                    if (result == 0)
                        continue;// 겹치긴 하는데 사각형의 변이 맞닿는 부분이 있을 때 0 출력 방지

                    System.out.println((i - 1) + \"-\" + (m - 1) + \" 구역에서 \" + result + \" 만큼 겹칩니다.\");
                }//안쪽 for 닫음

            }//바깥쪽 for 닫음
            System.out.println(\"\");
            System.out.println(\"겹치는 구역과 그 구역의 넓이값 출력을 완료했습니다.\");
            System.out.println(\"출력이 되지 않았다면 겹치는 부분이 없는 것 입니다.\");
            System.out.println(\"------*------*------*------*------*------*------*\");
        }//while 문 무한루프
    }//메인 메소드 닫음
}//클래스 닫음