🛠️

配列関連のメソッドや方法論の話

2022/02/28に公開

配列関連のメソッドや方法論の話

配列の扱いにまだ慣れていないので、備忘録として試したコードなどを掲載していきます。
テストコード全体は、一番に掲載。

Case 1: 配列の出力

1次元: Arrays.toString(array)

例:5カラムの配列

public static void displayAry(){  
	int[] displayAry = createAry(5);  
	System.out.println(Arrays.toString(displayAry));  
}  

出力結果:

[12, 3, 18, 10, 15]

2次元配列:Arrays.deepToString(array)

例:2 x 3 の二次元配列

public static void display2Dary(){  
	int[][] display2D= create2Dary(2,3);  
	System.out.println(Arrays.deepToString(display2D));  
}  

出力結果:

[[6, 12, 8], [9, 14, 9]]

https://www.geeksforgeeks.org/arrays-deeptostring-in-java-with-example/

Case2: システムからの入力値を配列に二次元配列に変換

これが手間取ったので、備忘録として。

例:5 x 4 の2次元配列

前提条件として、入力値のフォーマットは以下。nが行数を示す。列は4で固定。

n
s_1 e_1 h_1 l_1
...
s_n e_n h_n l_n
public static void main(String[] args) {  
	convertStrTo2d(test1);  
}

static String test1 =  
	"5\n" +                         // no.of row  
	"16654 16544 16757 16543\n" +   // column 1  
	"16535 16321 16602 16310\n" +   // column 2  
	"16321 16315 16463 16273\n" +   // (cont.)  
	"16313 16141 16313 15855\n" +  
	"15921 16117 16212 15918";  

public static void convertStrTo2d(String test){  
	Scanner scanner = new Scanner(test);  
	
	int row = scanner.nextInt();  
	int[][] testrow = new int[row][4];  
	for(int i = 0; i < row; i++)  
		for(int j = 0; j < 4; j++)  
			testrow[i][j] = scanner.nextInt();  

	System.out.println(Arrays.deepToString(testrow));  
	scanner.close();  
}

出力結果

[[16654, 16544, 16757, 16543], [16535, 16321, 16602, 16310], [16321, 16315, 16463, 16273], [16313, 16141, 16313, 15855], [15921, 16117, 16212, 15918]]

参考:テストコード

DemonstrateArray.java
import java.util.Arrays;  
import java.util.Scanner;  
  
public class DemonstrateArray {  
  
	// For recap: handling arrays  
	public static void main(String[] args) {  
		display2Dary(); // [[6, 12, 8], [9, 14, 9]]  
		displayAry(); // [12, 3, 18, 10, 15]  
		convertStrTo2d(test1);  
	}  

	// case1: Display elements in an array  
	// case1-1: an array 
	public static void displayAry(){  
		int[] displayAry = createAry(5);  
		System.out.println(Arrays.toString(displayAry));  
	}  

	// case1-2: 2D array  
	public static void display2Dary(){  
		int[][] display2D= create2Dary(2,3);  
		System.out.println(Arrays.deepToString(display2D));  
	}  

	// Case2: convert String input into int 2D array  
	static String test1 =  
		"5\n" +                         // no.of row  
		"16654 16544 16757 16543\n" +   // column 1  
		"16535 16321 16602 16310\n" +   // column 2  
		"16321 16315 16463 16273\n" +   // (cont.)  
		"16313 16141 16313 15855\n" +  
		"15921 16117 16212 15918";  
	public static void convertStrTo2d(String test){  
		Scanner scanner = new Scanner(test);  
		int row = scanner.nextInt();  
		int[][] testrow = new int[row][4];  
		for(int i = 0; i < row; i++)  
		for(int j = 0; j < 4; j++)  
		testrow[i][j] = scanner.nextInt();  
		System.out.println(Arrays.deepToString(testrow));  
		scanner.close();  
	}  

	// Array Generators  
	public static int[] createAry(int col){  
		int[] ary = new int[col];  
		for(int i = 0; i < col; i++){  
			ary[i] = (int) (Math.random() * 20);  
		}  
		return ary;  
	}  

	public static int[][] create2Dary(int row, int col){  
		int[][] twoDary = new int[row][col];  
		for(int i = 0; i < row; i++){  
			for(int j = 0; j < col; j++){  
				twoDary[i][j] = (int) (Math.random() * 20);  
			}  
		}  
		return twoDary;  
	}  
}

Discussion