[과제] 2차원 배열, 객체

Coastby·2022년 9월 25일
0

LIKELION Back-End School

목록 보기
12/61

과제1.

문자형 2차원 배열 5행 5열을 만들과 행과 열을 입력 받아 해당 좌표의 값을 'X'로 변환해 2차원 배열을 출력하시오.

  • 계속해서 반복 실행하도록 구현하고 행이나 열 입력 시 0미만 5이상의 수가 입력되면 프로그램을 종료하시오.
  • 객체 지향적으로 클래스 만들기

내 답

import java.util.Scanner;

class Pointer {

    private int row;
    private int col;
    private String[][] arr;
    final private int size;

    Pointer () {
        //사이즈 정해주기
        size = 5;
        //배열 생성
        arr = new String[size][size];
    }

    public void run () {

        Scanner sc = new Scanner(System.in);

        while (true) {
            try {
                System.out.println("행 인덱스를 입력하세요 : ");
                row = sc.nextInt();
                System.out.println("열 인덱스를 입력하세요 : ");
                col = sc.nextInt();
                //입력이 범위와 맞는지 확인 > 잘못입력 시 다시 입력받기
                if (row < size && col < size) {
                    this.row = row;
                    this.col = col;
                    // x축 index 출력
                    System.out.print(" ");
                    for (int i = 0; i < size; i++) {
                        System.out.print(" "+i);
                    }
                    System.out.println("");

                    //2차원 배열에 입력
                    for (int i = 0; i < arr.length; i++) {
                        for (int j = 0; j < arr[i].length; j++) {
                            String val;
                            if (i == row && j == col) {
                                val = "X";
                            } else {
                                val = " ";
                            }
                            arr[i][j] = val;
                        }
                    }

                    // 배열 출력
                    for (int i = 0; i < size; i++) {
                        System.out.print(i);
                        for (int j = 0; j < size; j++) {
                            System.out.print(" "+arr[i][j]);
                        }
                        System.out.println("");
                    }

                } else {
                    System.out.println("0에서 4사이 정수를 입력해세요.");
                }
            } catch (Exception e) {
                System.out.println("프로그램을 마칩니다.");
                break;
            }
        }
    }
}


public class Array2D {

    public static void main(String[] args) {

        Pointer p = new Pointer();
        p.run();

    }

}

⭐️ 피드백
1. 앞의 x 가 사라지지 않고 계속 있는 건데 문제 이해를 잘 못함.
2. char를 사용하면 더 출력하기 쉬움

3. intellij는 이렇게 나옴..

import java.util.Scanner;

class Pointer {

    private int row;
    private int col;
    private char[][] arr;
    final private int size;

    Pointer () {
        //사이즈 정해주기
        size = 5;
        //배열 생성
        arr = new char[size][size];
    }

    public void run () {

        Scanner sc = new Scanner(System.in);

        while (true) {
            try {
                System.out.println("행 인덱스를 입력하세요 : ");
                row = sc.nextInt();
                System.out.println("열 인덱스를 입력하세요 : ");
                col = sc.nextInt();
                //입력이 범위와 맞는지 확인 > 잘못입력 시 다시 입력받기
                if (row < size && col < size) {
                    this.row = row;
                    this.col = col;
                    // x축 index 출력
                    System.out.print(" ");
                    for (int i = 0; i < size; i++) {
                        System.out.print(" "+i);
                    }
                    System.out.println("");

                    //2차원 배열에 입력
                    arr[row][col] = 'X';
//                    for (int i = 0; i < arr.length; i++) {
//                        for (int j = 0; j < arr[i].length; j++) {
//                            String val;
//                            if (i == row && j == col) {
//                                val = "X";
//                            } else {
//                                val = " ";
//                            }
//                            arr[i][j] = val;
//                        }
//                    }

                    // 배열 출력
                    for (int i = 0; i < size; i++) {
                        System.out.print(i);
                        for (int j = 0; j < size; j++) {
                            System.out.print(" "+arr[i][j]);
                        }
                        System.out.println("");
                    }

                } else {
                    System.out.println("0에서 4사이 정수를 입력해세요.");
                }
            } catch (Exception e) {
                System.out.println("프로그램을 마칩니다.");
                break;
            }
        }
    }
}


public class Array2D {

    public static void main(String[] args) {

        Pointer p = new Pointer();
        p.run();

    }

}

과제 2.

다음 멤버를 가지고 직사각형을 표현하는 Rectangle 클래스를 작성하라.

  • int 타입의 x, y, width, height 필드: 사각형을 구성하는 점과 크기 정보
  • x, y, width, height 값을 매개변수로 받아 필드를 초기화하는 생성자
  • int square() : 사각형 넓이 리턴
  • void show() : 사각형의 좌표와 넓이를 화면에 출력
  • boolean contatins(Rectangle r) : 매개변수로 받은 r이 현 사각형 안에 있으면 true 리턴
  • main() 메소드의 코드와 실행 결과는 다음과 같다
public static void main(String[] args) {
   Rectangle r = new Rectangle(2, 2, 8, 7);
   Rectangle s = new Rectangle(5, 5, 6, 6);
   Rectangle t = new Rectangle(1, 1, 10, 10);

	 r.show();
   System.out.println("s의 면적은 "+s.square());
   if(t.contains(r)) System.out.println("t는 r을 포함합니다.");
   if(t.contains(s)) System.out.println("t는 s를 포함합니다.");
}

//result
(2,2)에서 크기가 8x7인 사각형
s의 면적은 36
t는 r을 포함합니다.

내 답

class Rectangle {

    private int x;
    private int y;
    private int width;
    private int height;

    public Rectangle(int x, int y, int width, int height) {
        this.x = x;
        this.y = y;
        this.width = width;
        this.height = height;
    }


    public void show () {
        System.out.printf("(%d,%d)에서 크기가 %dx%d인 사각형\n", x, y, width, height);
    }

    public int square() {
        return width * height;
    }

    public boolean contains (Rectangle r) {

        boolean result = false;
        if (x <= r.x && (x + width) <= (r.x + r.width)
        && y <= r.y && (y + height) <= (r.y + r.height)) {
            result = true;
        }
        return result;
    }



}


public class RectangleHome {

    public static void main(String[] args) {
        Rectangle r = new Rectangle(2, 2, 8, 7);
        Rectangle s = new Rectangle(5, 5, 6, 6);
        Rectangle t = new Rectangle(1, 1, 10, 10);

        r.show();
        System.out.println("s의 면적은 "+s.square());
        if(t.contains(r)) System.out.println("t는 r을 포함합니다.");
        if(t.contains(s)) System.out.println("t는 s를 포함합니다.");
    }


}
profile
훈이야 화이팅

0개의 댓글