公費日08:多次元配列
例
🌟例1🌟
浅い放射線の特徴
Heap領域のデータはプログラムが終了するまで生存します.
public class Test01 {
public static void main(String[] args) {
int[] a; // 배열의 주소를 기억할 변수
{
int[] b;
// b변수는 블록 안에서 만들어진 변수이므로 블록을 벗어나면 사라지는 변수
b = new int[5];
// new라는 명령으로 Heap에 배열을 만들고
// 변수에 기억시켰지만 이 블록이 닫히는 순간
// 사라지게 되므로 더 이상 이 배열을 사용할 수 없게 된다.
b[2] = 500;
// 얕은 복사
a = b;
a[2] = 1000;
// 복사가 되서 a에 들어가는게 아니라 둘이 리터럴이 저장된 주소를 공유
System.out.println("b[2] : " + b[2]);
// 따라서 a에서 값을 변경했기 때문에 b에서도 값이 바뀐다.
}
}
}
🌟例2🌟
5個の整数を格納する配列を作成し、データを埋め込みます.
異なる配列では、インデックス1からインデックス3までのデータのみが深度コピーされます.
import java.util.Arrays;
public class Test02 {
public static void main(String[] args) {
// origin
int[] ori = {10, 20, 30, 40, 50};
// toCopy
int[] copy = new int[10];
// 깊은 복사
System.arraycopy(ori, 0, copy, 0, 3);
// 가져올 배열, 복사를 시작할 위치, 저장할 배열, 복사 받는걸 시작할 위치, 데이터의 수
//배열 내용 출력
System.out.println("ori : " + Arrays.toString(ori));
System.out.println("ori : " + Arrays.toString(copy));
}
}
🌟例3🌟
「Potato Freed」という文字列の変数strを作成します.
1.Potato出力のみ抽出
2.Freedのみ抽出して出力する
public class Test03 {
public static void main(String[] args) {
// 문자열 변수
String str = "Potato Fried";
// 잘라낸 단어를 기억할 변수
String word1, word2;
// 필요 없는 데이터를 할당할 필요는 없기에 ""로 초기화를 하지 않는것
// Potato
int idx1 = str.indexOf(' ');
// 문자열 중 특정문자의 위치값을 알려주는 함수
word1 = str.substring(0, idx1);
// Fried
word2 = str.substring(str.indexOf('F'));
// 출력
System.out.println(word1);
System.out.println(word2);
}
}
🌟例4🌟
3人の学生
java、db、web、jsp、springスコアを記憶する配列を作成します.
各レッスンのスコアをランダムに入力と出力に設定
public class Test04 {
public static void main(String[] args) {
// 3명의 학생의 5과목 점수 배열
int[][] stud = new int[3][5];
// 과목 점수 입력
for(int i = 0 ; i < stud.length ; i++) {
for(int j = 0 ; j < stud[i].length ; j++) {
// 과목 점수 랜덤하게 입력
stud[i][j] = (int)(Math.random() * 41 + 60);
}
}
for(int[] st : stud) {
for(int sub : st) {
System.out.print(sub + " | ");
}
System.out.println();
}
// 총점 구하기
int[] total = new int[3];
for(int i = 0 ; i < stud.length ; i++) {
for(int j = 0 ; j < stud[i].length ; j++) {
total[i] += stud[i][j];
}
}
for(int t : total) {
System.out.println("### " + t);
}
}
}
練習問題
👑練習問題1👑
5科7学生,科目総得点と学生総得点
平均を計算して降順で出力する
import java.util.Arrays;
public class Ex01 {
public static void main(String[] args) {
// 5과목 7학생 배열
int[][] subj = new int[6][8];
// 랜덤 점수 채워넣기
for(int i = 0 ; i < subj.length - 1 ; i++) {
for(int j = 0 ; j < subj[i].length - 1 ; j++) {
// 각각의 마지막은 총점 자리니까 - 1
// i 과목의 j학생 점수
subj[i][j] = (int)(Math.random() * 41 + 60);
// 과목 총점 더하기
subj[i][subj[i].length - 1] += subj[i][j];
}
}
// 학생 총점 계산
for(int i = 0 ; i < subj.length - 1 ; i++) {
for(int j = 0 ; j < subj[i].length - 1 ; j++) {
subj[subj.length - 1][j] += subj[i][j];
}
}
// 평균 계산
double[] subAvg = new double[5];
double[] stuAvg = new double[7];
for(int i = 0 ; i < subAvg.length ; i++) {
// subAvg는 학생 수로 나눠야함
subAvg[i] = subj[i][stuAvg.length] / (double) stuAvg.length;
for(int j = 0 ; j < stuAvg.length ; j++) {
if(i > 0) {
break;
}
// stuAvg는 과목 수로 나눠야함
stuAvg[j] = subj[subAvg.length][j] / (double) subAvg.length;
}
}
// 점수 출력
for(int[] s : subj) {
System.out.println(Arrays.toString(s));
}
// 평균 출력
for(int i = 0 ; i < subAvg.length ; i++) {
System.out.print((char)('a' + i) + "과목 평균 : ");
System.out.printf("%.1f | ", subAvg[i]);
}
System.out.println();
for(int i = 0 ; i < stuAvg.length ; i++) {
System.out.print((char)('A' + i) + "학생 평균 : ");
System.out.printf("%.1f | ", stuAvg[i]);
}
// 내림차순
// 학생을 석차순으로 저장할 배열
char[] std = new char[7];
// 학생 이름 채우기
for(int i = 0 ; i < std.length ; i++) {
std[i] = (char)('A' + i);
}
// 학생 평균을 비교해 정렬
for(int i = 0 ; i < stuAvg.length ; i++) {
double noTmp;
char chTmp;
for(int j = 0 ; j < i ; j++) {
if(stuAvg[i] > stuAvg[j]) {
noTmp = stuAvg[i];
stuAvg[i] = stuAvg[j];
stuAvg[j] = noTmp;
chTmp = std[i];
std[i] = std[j];
std[j] = chTmp;
}
}
}
System.out.println();
// 석차 출력
for(int i = 0 ; i < std.length ; i++) {
System.out.print((i + 1) + "위 " + std[i] + "학생 | ");
}
}
}
Reference
この問題について(公費日08:多次元配列), 我々は、より多くの情報をここで見つけました https://velog.io/@samjan/국비-Day-08テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol