아래의 코드들은 해당 패키지에서 작성되었다.
package com.kh.practice.dimension;
import java.util.Scanner;
public class DimensionPractice {
}
public void practice1() {
// 3행 3열짜리 문자열 배열 선언 및 할당
// 인덱스 0행 0열부터 2열 2행까지 차례대로 접근
// (0, 0)형식으로 출력
String [][] arr = new String[3][3];
for(int i=0; i<arr.length; i++) {
for(int j=0; j<arr[i].length; j++) {
System.out.printf("(%d, %d)", i, j);
}
System.out.println();
}
public void practice2() {
// 4행 4열짜리 정수형 배열 선언 및 할당
// 1) 1~16 값 차례대로 저장
// 2) 저장된 값들 차례대로 출력
int [][] arr = new int[4][4];
int num = 1;
for(int i=0; i<arr.length; i++) {
for(int j=0; j<arr[i].length; j++) {
arr[i][j]=num;
if(num<10) {
System.out.print(" "+num+" ");
} else {
System.out.print(num+" ");
}
num++;
}
System.out.println();
}
}
public void practice3() {
// 4행 4열 정수형 배열 선언 및 할당
// 1) 16~1과 같이 값을 거꾸로 저장
// 2) 저장된 값들을 차례대로 출력
int [][] arr = new int[4][4];
int num = 16;
for(int i=0; i<arr.length; i++) {
for(int j=0; j<arr[i].length; j++) {
arr[i][j] = num;
if(num<10) {
System.out.print(" "+num+" ");
} else {
System.out.print(num+" ");
}
num--;
}
System.out.println();
}
}
public void practice4() {
// 4행 4열 2차원 배열 생성
// 0행 0열부터 2행 2열까지 1~10까지의 임의의 정수값 저장
// 값과 행열의 합으로 출력
int [][] arr = new int [4][4];
int sum1 = 0;
int sum2 = 0;
for(int i=0; i<arr.length-1; i++) {
for(int j=0; j<arr[i].length-1; j++) {
arr[i][j] = (int)(Math.random()*10+1);
}
}
// arr[0][3] = arr[0][0]+arr[0][1]+arr[0][2];
// arr[1][3] = arr[1][0]+arr[1][1]+arr[1][2];
// arr[2][3] = arr[2]
for(int i=0; i<arr.length-1; i++) {
for(int j=0; j<arr.length-1; j++) {
arr[i][3] += arr[i][j];
}
sum1 += arr[i][3];
}
// arr[3][0] = arr[0][0]+arr[1][0]+arr[2][0];
// arr[3][1] = arr[0][1]+arr[1][1]+arr[2][1];
for(int i=0; i<arr.length-1; i++) { // 0 1 2
for(int j=0; j<arr[i].length-1; j++) {
arr[3][j] += arr[i][j];
}
// sum2 += arr[3][j]; // 질문
}
// 수정 코드
for(int i=0; i<arr.length-1; i++) {
sum2 += arr[3][i];
}
// sum2 = arr[3][0]+arr[3][1]+arr[3][2]
// arr[3][3] = arr[0][3]+arr[0][3]+arr[2][3]+arr[0][3]+arr[1][3]+arr[]
arr[3][3] = sum1 + sum2;
for(int i=0; i<arr.length; i++) {
for(int j=0; j<arr[i].length; j++) {
if(arr[i][j]<10) {
System.out.print(" "+arr[i][j]+" ");
} else {
System.out.print(arr[i][j]+" ");
}
}
System.out.println();
}
System.out.println(sum1);
System.out.println(sum2); // 값이 틀리게 나옴
}
열들의 합을 모두 더하는 sum2가 제대로 출력되지 않아서 질문을 하였다.(빨간 밑줄) 그리고 수정된 코드가 파란밑줄의 코드이다. 별로 효율적인 코드라고는 생각되지 않는다.
public void practice5() {
// 2차원 배열의 행과 열의 크기를 사용자에게 입력 받기
// 1~10 사이의 숫자 x -> "반드시 1~10 사이의 정수를 입력해야 합니다."
// 출력 다시 정수 받기
// 크기가 정해진 이차원 배열 안에 영어 대문자 랜덤하게 할당, 출력
Scanner sc = new Scanner(System.in);
int row = 0;
int col = 0;
do {
System.out.print("행 크기 : ");
row = sc.nextInt();
if(row<1 || row>10) { // 10보단 큰 수가 들어올 때의 조건을 빼먹었다
System.out.println("반드시 1~10 사이의 정수를 입력해야 합니다.");
}
} while(row<1 || row>10);
do {
System.out.print("열 크기 : ");
col = sc.nextInt();
if(col<1 || col>10) { // 10보다 큰 수가 들어올 때의 조건을 빼먹음
System.out.println("반드시 1~10 사이의 정수를 입력해야 합니다.");
}
} while(col<1 || col>10);
char [][] arr = new char [row][col];
// A~Z : 65~90
for(int i=0; i<arr.length; i++) {
for(int j=0; j<arr[i].length; j++) {
arr[i][j] = (char)(Math.random()*26+65);
System.out.print(arr[i][j]+" ");
}
System.out.println();
}
}