[JAVA]整理アレイ(Array)-(2)
🏃♂️ 入る前に...
この投稿は学習中に作成され、javaの定式-基礎教材を学習し整理する文章です.
※学習ページ:〔Tob Master:Java〕
*教材の目次順と構成内容に基づいて作成する.
欠落している可能性のあるコンテンツは、他の検索で埋め込まれます.
配列部分を整理してみると、膨大な数になっていました.
意外にも二つの文章に分かれている.
(整列整理参照)
※2次元配列
今回は単なる並びではありません.
私たちが前に見た1次元アレイではありません.
2 Dまたは多次元アレイの場合、
ちょっと聞きに行きましょう.
レベルではメモリ容量に制限はありません...
主に1 Dおよび2 Dアレイを使用します.
まず、2 D配列について説明します.
◇宣言
宣言の仕方は簡単だ.
1 Dアレイの宣言方法と同じです.
かっこ
[
[
[
上記の3つの形式で宣言することができます.
2 D配列複写
主にテーブルデータを含めるために使用されます.
上記の形式では
最初の
2番目の
既定値は0です.
索引
索引:
上記のように
行と列の概念でアクセスできます.
範囲はもちろんです.
0から始まります.
終了値は[配列ごとの長さ]-1です.
初期化
私たちが以前知っていた1次元アレイの場合と似ています.
(さらに、省略
急に好奇心がわいた.
2 D配列の場合、長さ
まず、行と列の数の異なる配列を作成し、出力します.
内部構成1 Dアレイの
|
使い方を知っておく.
①合計&平均
平均に出力されました.
出力をよりきれいにします.
②String文字列2 D配列
①比較&出力-
ただし、1次元配列でのみ使用できます.
(
2つの配列に格納されているすべての要素を比較し、同じでtrueを返し、異なるでfalseを返します.
(
(
(もちろん
また、実際のアレイの長さより大きいrangeを指定すると、オーバーフローの位置はゼロに塗りつぶされ、コピーされます.
この投稿は学習中に作成され、javaの定式-基礎教材を学習し整理する文章です.
※学習ページ:〔Tob Master:Java〕
*教材の目次順と構成内容に基づいて作成する.
欠落している可能性のあるコンテンツは、他の検索で埋め込まれます.
配列部分を整理してみると、膨大な数になっていました.
意外にも二つの文章に分かれている.
(整列整理参照)
※2次元配列
今回は単なる並びではありません.
私たちが前に見た1次元アレイではありません.
2 Dまたは多次元アレイの場合、
ちょっと聞きに行きましょう.
レベルではメモリ容量に制限はありません...
主に1 Dおよび2 Dアレイを使用します.
まず、2 D配列について説明します.
◇宣言
宣言の仕方は簡単だ.
1 Dアレイの宣言方法と同じです.
かっこ
[]
を追加するだけです.[
타입[][] 변수이름 ;
]形式[
타입 변수이름 [][];
]形式[
타입[] 변수이름[] ;
]形式2 D配列複写
主にテーブルデータを含めるために使用されます.
上記の形式では
最初の
[]
は、テーブルデータの行(row)値です.2番目の
[]
は、テーブルデータのカラム値です.int[][] score = new int[4][3] ; // 4행 3열의 2차원 배열
もちろん、この例はint
タイプの配列です.既定値は0です.
索引
索引:
上記のように
行と列の概念でアクセスできます.
範囲はもちろんです.
0から始まります.
終了値は[配列ごとの長さ]-1です.
int[][] score = new int[4][3] // 4행 3열의 2차원 배열
score[0][0] = 100 ; // 2차원 배열 score의 1행 1열값을 100으로
System.out.println(score[0][0]) // 100 출력 (1행 1열 값)
◇初期化初期化
私たちが以前知っていた1次元アレイの場合と似ています.
{}
内には{}
があればよい.(さらに、省略
new int
と省略不可のコード構成条件も同じである.)int[][] arr = new int[][]{ {1, 2, 3} , {4, 5, 6} };
int[][] arr = { {1, 2, 3} , {4, 5, 6} }; //생략이 가능하며
// 선언과 동시에 생성 하지 않는 이상 생략 불가능하다는 것도 동일하다.
/*
필수나 오류 발생은 아니지만
가독성과 이해가 쉬우려면 아래 형식과 같이 작성하는 것이 좋다.
*/
int[][] arr = {
{1, 2, 3}, // 1행
{4, 5, 6} // 2행
};
ここでちょっと待ってください.急に好奇心がわいた.
2 D配列の場合、長さ
.length
はどのように出力されますか?まず、行と列の数の異なる配列を作成し、出力します.
public static void main(String[] args) {
int[][] score = {
{100, 100, 100},
{70, 80, 90},
{65, 85, 93},
{100, 75, 60}
};
int tsum = 0; // 배열 내 모든 값의 합
int rsum = 0; // 각 행의 합을 나타내기 위한 변수
for (int i = 0; i < score.length; i++) { // (2차원배열).length = 행(row) 수 -> 4회 반복
for (int k = 0; k < score[i].length; k++) { // (2차원배열)[( row index) ].length = 열(column) 수 -> 3회 반복
System.out.printf("score[%d][%d] (%d행 %d열) = %d %n", i,k, i+1, k+1, score[i][k]) ;
rsum += score[i][k];
tsum += score[i][k];
}
System.out.printf("score[%d] (%d행) 합 = %d %n", i, i+1, rsum);
rsum = 0; // 행마다 0으로 초기화
System.out.println(); // 행 정보 출력마다 빈 줄 간격
}
System.out.println("배열 내 총 합 = "+tsum) ;
}
score[0][0] (1행 1열) = 100
score[0][1] (1행 2열) = 100
score[0][2] (1행 3열) = 100
score[0] (1행) 합 = 300
score[1][0] (2행 1열) = 70
score[1][1] (2행 2열) = 80
score[1][2] (2행 3열) = 90
score[1] (2행) 합 = 240
score[2][0] (3행 1열) = 65
score[2][1] (3행 2열) = 85
score[2][2] (3행 3열) = 93
score[2] (3행) 합 = 243
score[3][0] (4행 1열) = 100
score[3][1] (4행 2열) = 75
score[3][2] (4행 3열) = 60
score[3] (4행) 합 = 235
배열 내 총 합 = 1018
2 D配列参照関数の.length
:行(行)数内部構成1 Dアレイの
.length
:カラム数|
{
利用}
例によって使い方を知っておく.
①合計&平均
public static void main(String[] args) {
int[][] score = { // 5행 3열 Table형 2차원 배열 생성
{100, 100, 100},
{70, 80, 90},
{65, 85, 93},
{100, 75, 60},
{50, 50, 50}
};
int korSum = 0, engSum = 0, mathSum = 0 ;
System.out.println("번호 국어 영어 수학 총점 평균");
System.out.println("==============================");
for (int i = 0; i < score.length; i++){
int sum = 0; // 개인별(행별) 총점
float avg = 0.0f; // 개인별(행별) 평균
korSum += score[i][0] ;
engSum += score[i][1] ;
mathSum += score[i][2] ;
System.out.printf("%3d", i+1) ; // 순번(행번호) _ 3으로 길이 지정 -> 남는 공간 공백 만들어 출력
for (int k = 0; k < score[i].length; k++) {
sum += score[i][k]; // 행별 총점 변수에 각 배열의 각 값들을 누적합
System.out.printf("%5d", score[i][k]); // 각 값들을 출력 _ %n은 빼서 이어붙여 출력 (%5 길이 지정)
}
avg = sum/(float)score[i].length;
System.out.printf("%5d %5.1f %n", sum, avg); // 각 값 대상 for문 마치고 총합 평균 출력
}
System.out.println("==============================");
System.out.printf("총점 : %3d %4d %4d %n", korSum, engSum, mathSum) ;
}
번호 국어 영어 수학 총점 평균
==============================
1 100 100 100 300 100.0
2 70 80 90 240 80.0
3 65 85 93 243 81.0
4 100 75 60 235 78.3
5 50 50 50 150 50.0
==============================
총점 : 385 390 393
以前に試した出力コードを再適用します.平均に出力されました.
出力をよりきれいにします.
②String文字列2 D配列
public static void main(String[] args) {
// 앞서 살펴보았던 정수 2차원 배열과 사용하는 방법은 동일하다
String[][] words = {
{"chair", "의자"},
{"bed", "침대"},
{"book", "책"},
{"integer", "정수"}
};
Scanner scanner = new Scanner(System.in) ; // 질문응답 형식 프로그램
for (int i = 0; i < words.length; i++) {
System.out.printf("질문%d . %s의 뜻은?", i+1, words[i][0]) ; // .printf()를 활용해 %s로 문자열 출력
String tmp = scanner.nextLine(); // 입력받기
if (tmp.equals(words[i][1])) {
System.out.printf("정답! %n%n") ; // 한 줄 공백 간격을 위해 한 번 더
}else{
System.out.printf("오답! (정답 : %s) %n%n",words[i][1]);
}
}
}
질문1 . chair의 뜻은?의자
정답!
질문2 . bed의 뜻은?의자
오답! (정답 : 침대)
질문3 . book의 뜻은?책
정답!
질문4 . integer의 뜻은?실수
오답! (정답 : 정수)
🔨 『Arrays Class』の簡単な理解①比較&出力-
equals()
toString()
前の1次元レイアウトを整理するときにも使用したことがあります..toString()
メソッドは、値を文字列として配列形式で1行出力することができる.ただし、1次元配列でのみ使用できます.
(
.toString()
2次元配列.ver=deepToString()
:すべての要素に再帰的にアクセスするため、次元制限X)int[] arr1 = {1, 2, 3} ;
int[][] arr2 = { {1, 2, 3} , {4, 5, 6} };
System.out.println(Arrays.toString(arr1)); // [1, 2, 3]
System.out.println(Arrays.deepToString(arr2)); //[[1, 2, 3],[4, 5, 6]]
.equals()
は、上記の例でも使用されている.2つの配列に格納されているすべての要素を比較し、同じでtrueを返し、異なるでfalseを返します.
toString()
と同様に、.equals()
は1次元アレイにのみ適用されます.(
.equals()
2次元配列.ver=deepEquals()
:すべての要素に再帰的にアクセスするため、次元制限X)String[][] str2D = {
{"chair", "의자"},
{"bed", "침대"}
};
String[][] str2D2 = {
{"chair", "의자"},
{"bed", "침대"}
};
System.out.println(Arrays.equals(str2D, str2D2)); //false
System.out.println(Arrays.equals(str2D[0], str2D2[0])); // true
System.out.println(Arrays.deepEquals(str2D, str2D2)); // true
②複製-copyOf()
copyOfRange()
二つの方法の違いは何ですか.copyOf([배열 참조 변수], [newLength])
:アレイ全体をコピーして新しいアレイを作成し、(
[newLength]
:必須項目で、新しい長さを指定してコピーできます.左から)copyOfRange([배열 참조 변수], [from] ,[to])
:配列の一部をコピーして新しい配列を作成し、返します.(もちろん
[to]
で指定されたindex値は含まれません.)また、実際のアレイの長さより大きいrangeを指定すると、オーバーフローの位置はゼロに塗りつぶされ、コピーされます.
int[] arr = {0, 1, 2, 3, 4};
int[] arr2 = Arrays.copyOf(arr, arr.length) ;
int[] arr3 = Arrays.copyOf(arr, 3) ;
int[] arr4 = Arrays.copyOf(arr, 7) ; // 더 큰 길이 입력
int[] arr5 = Arrays.copyOfRange(arr, 2, 4) ;
int[] arr6 = Arrays.copyOfRange(arr, 0, 7) ; // 더 큰 길이 입력
System.out.println(Arrays.toString(arr)) ; // [0, 1, 2, 3, 4]
System.out.println(Arrays.toString(arr2)) ; // [0, 1, 2, 3, 4]
System.out.println(Arrays.toString(arr3)) ; // [0, 1, 2]
System.out.println(Arrays.toString(arr4)) ; // [0, 1, 2, 3, 4, 0, 0] _ 0으로 채워짐
System.out.println(Arrays.toString(arr5)) ; // [2, 3]
System.out.println(Arrays.toString(arr6)) ; // [0, 1, 2, 3, 4, 0, 0] _ 0으로 채워짐
③並べ替え-sort()
その名の通り、並べ替えに使う方法.int[] arr = {3, 2, 0, 1, 4};
Arrays.sort(arr);
System.out.println(Arrays.toString(arr)); [0, 1, 2, 3, 4]
Reference
この問題について([JAVA]整理アレイ(Array)-(2)), 我々は、より多くの情報をここで見つけました https://velog.io/@yummygyudon/JAVA-배열Array-정리-2テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol