문자형 2차원 배열 5행 5열을 만들과 행과 열을 입력 받아 해당 좌표의 값을 'X'로 변환해 2차원 배열을 출력하시오.
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();
}
}
다음 멤버를 가지고 직사각형을 표현하는 Rectangle 클래스를 작성하라.
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를 포함합니다.");
}
}