1. 다차원 배열 문제
package Mission;
import java.util.Scanner;
/**
* 문자형 2차원 배열 5행 5열을 만들고 행과 열을 입력 받아 해당 좌표의 값을 'X'로 변환해 2차원 배열을 출력하시오
* 또한 계속해서 반복 실행하도록 구현하고 행이나 열 입력시 0 미만 5 이상의 수가 입력되면 프로그램을 종료하시오.
*/
public class Mission5 {
//1. 클래스 내의 멤버들이 접근 가능한 멤버변수 배열 char[][] arrayBoard 를 선언한다.
char[][] board;
//2. 모든 항목이 '0'으로 초기화 된 배열을 만든다.
// 매겨변수의 배열 크기를 전달받아 그 크기만큼 배열을 만들것이다.
char[][] makeBoard(int value) {
//유효성 검사 - 0이하의 수가 들어왔을 때, 다시 입력을 받음
do {
if (value <= 0) {
System.out.println("1이상의 수를 입력해주세요.");
} else {
//배열의 크기가 1이상으로 정상적으로 입력되었으면 do-while문 벗어남
break;
}
} while (value <= 0); //0보다 작을경우 do-while문이 계속 실행된다
board = new char[value][value];
/**
String[][] arrayBoard = {
{" ", " ", " ", " ", " "},
{" ", " ", " ", " ", " "},
{" ", " ", " ", " ", " "},
{" ", " ", " ", " ", " "},
{" ", " ", " ", " ", " "},
};
*/
for (int i = 0; i < value; i++) {
for (int k = 0; k < value; k++) {
board[i][k] = '0';
}
}
return board;
}
//3. 배열의 결과를 출력하는 메서드를 만들었다
void showArray(char[][] a) {
for(char[] col : a) {
for (char tmp : col) {
System.out.print(tmp + "");
}
System.out.println();
}
}
//4. 인수를 전달받아 해당 위치의 배열요소를 X로 바꾼다
char[][] markBoard(int x, int y) {
board[x - 1][y - 1] = 'X';
return board;
}
//5. 5 x 5 배열을 만든다. 콘솔에서 좌표값을 받아 표시한다
public static void main(String[] args) {
Mission5 point = new Mission5();
point.board = point.makeBoard(5);
point.showArray(point.board);
System.out.println("원하는 위치의 좌표를 입력하시오.");
Scanner scanner = new Scanner(System.in);
System.out.println("X : ");
int x = scanner.nextInt();
System.out.println("Y : ");
int y = scanner.nextInt();
scanner.close();
point.showArray(point.markBoard(x, y));
}
}
2. 다차원 배열 - 메인 메서드 하나로
package Mission;
import java.util.Scanner;
/**
* 문자형 2차원 배열 5행 5열을 만들고 행과 열을 입력 받아 해당 좌표의 값을 'X'로 변환해 2차원 배열을 출력하시오
* 또한 계속해서 반복 실행하도록 구현하고 행이나 열 입력시 0 미만 5 이상의 수가 입력되면 프로그램을 종료하시오.
*/
public class Mission5_2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String[][] arr = new String[5][5];
int row;
int column;
for (int i = 0; i < arr.length; i++){
for (int j = 0; j < arr[0].length; j++)
arr[i][j] = " ";
}
while (true){
System.out.println("행 인덱스 입력 >> ");
row = sc.nextInt();
System.out.println("열 인덱스 입력 >> ");
column = sc.nextInt();
if (row > 0 && row < 6 && column > 0 && column <6) {
arr[row][column] = "X";
System.out.println(" 0 1 2 3 4 ");
for (int i = 0; i < arr.length; i++) {
System.out.print(i + " ");
for (int j = 0; j < arr[0].length; j++) {
System.out.print(arr[i][j] + " ");
}
System.out.println();
}
}else {
System.out.println("프로그램을 종료합니다.");
break;
}
}
}
}
1. 다차원 배열 - try catch문
package Mission;
import java.util.Scanner;
/**
* 문자형 2차원 배열 5행 5열을 만들고 행과 열을 입력 받아 해당 좌표의 값을 'X'로 변환해 2차원 배열을 출력하시오
* 또한 계속해서 반복 실행하도록 구현하고 행이나 열 입력시 0 미만 5 이상의 수가 입력되면 프로그램을 종료하시오.
*/
public class Mission5_3 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("배열 크기를 입력하세요. >> ");
int size;
int row; //행
int col; //열
do {
size = scanner.nextInt(); //배열의 크기를 입력받음
if (size <= 0) {
System.out.println("1 이상의 수를 입력해주세요."); //0 이하의 수가 들어왔을 때, 다시 입력을 받음
} else {
break; //배열의 크기가 1이상, 즉 정상적으로 입력되었으면, do-while 문을 벗어남
}
} while (size <= 0); //배열의 크기가 0보다 작을경우 Loop가 계속 돌아가게 한다.
char[][] array = new char[size][size]; //'X'를 입력받아야 하기 때문에, char배열로 생성하였다
while (true) {
//try-catch문을 사용할 경우 정수값이 input되지 않을경우 에러 발생없이 프로그램이 종료된다
//'X'를 표시할 행과 열을 입력받음
try {
System.out.println("행 인덱스를 입력하세요. (0 ~ " + (size - 1) + ") 입력 >> ");
row = scanner.nextInt();
System.out.println("열 인덱스를 입력하세요. (0 ~ " + (size - 1) + ") 입력 >> ");
col = scanner.nextInt();
} catch (Exception e) {
System.out.println("숫자만 입력하셔야 됩니다. 프로그램을 종료합니다. ");
break;
}
//인덱스 값에 포함되지 않는 값이 들어올 경우 프로그램 종료
if (array[row][col] != 'X') {
array[row][col] = 'X';
} else {
System.out.println();
System.out.println(" 이미 입력하셨습니다. ");
System.out.println();
}
System.out.print(" ");
for (int i = 0; i < size; i++) {
System.out.print(i + " ");
System.out.println();
for (int k = 0; k < array.length; k++) {
System.out.print(array[i][k] + " ");
}
System.out.println();
}
}
}
}
2. Rectangle
package Mission;
/**
* int 타입의 x, y, width, height 필드 : 사각형을 구성하는 점과 크기 정보
* x, y, width, height 값을 매개변수로 받아 필드를 초기화하는 생성자
* -> (2, 2)에서 크기가 8x7인 사각형 : s의 면적은 36, t는 r을 포함합니다
*/
public class Rectangle {
int x;
int y;
int width;
int height;
//x, y, width, height 값을 매개변수로 받아 필드를 초기화하는 생성자
int Rectangle(int x, int y, int width, int height) {
this.x = x;
this.y = y;
this.width = width;
this.height = height;
}
//사각형 넓이 리턴
int square() {
}
//사각형의 좌표와 넓이를 화면에 출력
void show() {
}
//매개변수로 받은 r이 현 사각형 안에 있으면 true 리턴
boolean contains(Rectangle r) {
}
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를 포함합니다");
}
}
}
'멋쟁이 사자처럼 2기 150일간의 기록' 카테고리의 다른 글
자바 5일차 과제 Employee 상속 (0) | 2022.09.26 |
---|---|
멋쟁이 사자처럼 백엔드스쿨 2기 8일차 D - 143 - 자바 객체지향 2파트 복습 (1) | 2022.09.26 |
멋쟁이 사자처럼 백엔드스쿨 2기 5일차 D - 146 - 일정변경으로 인한 계획 수정 (0) | 2022.09.23 |
멋쟁이 사자처럼 백엔드스쿨 2기 4일차 D - 147 : 반복문, 객체지향 (1) | 2022.09.22 |
백엔드스쿨 자바 2일차 미션 (0) | 2022.09.21 |