Java 標準出力から二次元配列での受け取り方、行列の入れ替え方

#Java 標準出力から二次元配列での受け取り方、行列の入れ替え方

##行（横）ごとに値を受け取る
####inputがint型の場合

【input】
1 2 3
4 5 6
7 8 9
0 1 2

```java
// スキャナークラスのロード
Scanner scan = new Scanner(System.in);
// 受け取り用配列
int[][] line = new int[4][3];

// トークン取得、配列格納
for (int i = 0; i < 4; i++) {
	line[i] = new int[3];
	for (int j = 0; j < 3; j++) {
		line[i][j] = scan.nextInt();
	}
}
		
// 配列の中身表示
for (int i = 0; i < line.length; i++) {
	for (int j = 0; j < line[0].length; j++) {
		System.out.println("line[" + i + "][" + j + "] = " + line[i][j]);
	}
}
```
【出力結果】
line[0][0] = 1
line[0][1] = 2
line[0][2] = 3
line[1][0] = 4
line[1][1] = 5
line[1][2] = 6
line[2][0] = 7
line[2][1] = 8
line[2][2] = 9
line[3][0] = 0
line[3][1] = 1
line[3][2] = 2


####inputがString型の場合

例：
ABC
DEF
GHI
JKL

```java
// スキャナークラスのロード
Scanner scan = new Scanner(System.in);
// 二次元配列の行数を作成(配列の要素数は例に合わせて記載)
String[][] line = new String[4][3];

// トークン取得、二次元配列へ格納
for (int i = 0; i < 4; i++) {
	line[i] = scan.next().split("");
}

// 配列の中身表示
for (int i = 0; i < line.length; i++) {
	for (int j = 0; j < line[0].length; j++) {
		System.out.println("line[" + i + "][" + j + "] = " + line[i][j]);
	}
}
```

【出力結果】
line[0][0] = A
line[0][1] = B
line[0][2] = C
line[1][0] = D
line[1][1] = E
line[1][2] = F
line[2][0] = G
line[2][1] = H
line[2][2] = I
line[3][0] = J
line[3][1] = K
line[3][2] = L

##列（縦）ごとに値を受け取る
####inputがint型の場合

【input】
1 2 3
4 5 6
7 8 9
0 1 2

```java
// スキャナークラスのロード
Scanner scan = new Scanner(System.in);
// 受け取り用配列
int[][] line = new int[4][3];

// トークン取得、配列格納
for (int i = 0; i < 4; i++) {
	line[i] = new int[3];
	for (int j = 0; j < 3; j++) {
		line[i][j] = scan.nextInt();
	}
}

// 縦列に文字列を格納しなおす
int[][] column = new int[line[0].length][line.length];
for (int i = 0; i < line.length; i++) {
	for (int j = 0; j < line[0].length; j++) {
		column[j][i] = line[i][j];
	}
}
//		// 上を具体的に数字に置き変えると
//		int[][] column = new int[3][4];
//		for (int i = 0; i < 4; i++) {
//			for (int j = 0; j < 3; j++) {
//				column[j][i] = line[i][j];
//			}
//		}

// 配列の中身表示
System.out.println("---line(行列そのまま)---");
for (int i = 0; i < line.length; i++) {
	for (int j = 0; j < line[0].length; j++) {
		System.out.print(line[i][j]);
	}
	System.out.println();
}

// 配列の中身表示
System.out.println("---column(行列入れ替え)---");
for (int i = 0; i < column.length; i++) {
	for (int j = 0; j < column[0].length; j++) {
		System.out.print(column[i][j]);
	}
	System.out.println();
}
```
【出力結果】
---line(行列そのまま)---
123
456
789
012
---column(行列入れ替え)---
1470
2581
3692


####inputがString型の場合

例：
ABC
DEF
GHI
JKL

```java
// スキャナークラスのロード
Scanner scan = new Scanner(System.in);
// 二次元配列の行数を作成(配列の要素数は例に合わせて記載)
String[][] line = new String[4][3];

// トークン取得、二次元配列へ格納
for (int i = 0; i < 4; i++) {
	line[i] = scan.next().split("");
}

// 縦列に文字列を格納しなおす
String[][] column = new String[line[0].length][line.length];
for (int i = 0; i < line.length; i++) {
	for (int j = 0; j < line[0].length; j++) {
		column[j][i] = line[i][j];
	}
}
//		// 上を具体的に数字に置き変えると
//		String[][] column = new String[3][4];
//		for (int i = 0; i < 4; i++) {
//			for (int j = 0; j < 3; j++) {
//				column[j][i] = line[i][j];
//			}
//		}
	
// 配列の中身表示
System.out.println("---line(行列そのまま)---");
for (int i = 0; i < line.length; i++) {
    for (int j = 0; j < line[0].length; j++) {
        System.out.print(line[i][j]);
    }
    System.out.println();
}

// 配列の中身表示
System.out.println("---column(行列入れ替え)---");
for (int i = 0; i < column.length; i++) {
    for (int j = 0; j < column[0].length; j++) {
        System.out.print(column[i][j]);
    }
    System.out.println();
}
```

【出力結果】
---line(行列そのまま)---
ABC
DEF
GHI
JKL
---column(行列入れ替え)---
ADGJ
BEHK
CFIL