Javaベース(多次元配列)
4845 ワード
3月30日内容整理
今日、多次元配列を入力して出力し、計算します.
どうしたんですか.多次元配列が宣言された時に、別々に宣言されていましたが、成立したのでしょうか?!
疑問がある
上の質問の中で下の部分!!
int[][]score=new int [num][];
for(int a=0;ascore[i]=new int[num01]; ...}
説明のかわりに下図を使う
変数を気にしないで、画像の構造を見て、、、
図に示すように、num(行のアドレス値を有する)->num[0](行のインデックスが列のアドレス値を有する)->num[0][0](値を含む)
この構造で保存します.
int[][]score=new int [num][]; 先に明行して、それから
score[i]=new int[num01];for文ではscore[i]の1行目の列に新しい空間範囲を作成できます.
どうしたんですか.各アドレスの値は格納されています.これは、必要に応じて検索してロードする方法です.
今日、多次元配列を入力して出力し、計算します.
package study_0330;
import java.util.Scanner;
public class study_0330 {
public static void main(String[] args) {
//전체배열개수 행의수 이다.
//문1) 각 학생별로 합계와 평균을 구하여라.
/*int[][]score= {{75,85,70},{85,95,85},{60,55,40},{55,65,60}};
for(int i=0;i<score.length;i++) {
System.out.print((i+1)+"번 ");
int sum=0;
double avg=0.0;
for(int k=0;k<score[i].length;k++) {
System.out.print(score[i][k]+" ");
sum+=score[i][k];
}
avg=sum/score[i].length;
System.out.println(sum+" "+avg);
}*/
//문2)이번에는 입력하여 각 학생별로 합계와 평균을 구하여라.
/*int[][]score=new int [2][3]; ========>내가푼 방법
Scanner scan=new Scanner(System.in);
for(int i=0;i<2;i++) {
int sum=0;
double avg=0.0;
for(int j=0;j<3;j++) {
System.out.println(i+1+"번째 학생점수를 입력하세요");
int num=scan.nextInt();
score[i][j]=num;
sum+=score[i][j];
classScore=score[0][j]+score[1][j];
}
avg=sum/score[i].length;
System.out.println(i+1+"번째 학생점수입력완료");
System.out.println(i+1+"번째 총합계:"+sum+" 평균:"+avg);
System.out.println();
}*/
/*int[][]score=new int [2][3]; ========>선생님이 푼방법 및 응용
Scanner scan=new Scanner(System.in);
for(int i=0;i<2;i++) {
System.out.println(i+1+"번학생 국어점수를 입력하세요");
score[i][0]=scan.nextInt();
System.out.println(i+1+"번학생 영어점수를 입력하세요");
score[i][1]=scan.nextInt();
System.out.println(i+1+"번학생 수학점수를 입력하세요");
score[i][2]=scan.nextInt();
System.out.println();
}
for(int i=0;i<2;i++) {
int sum=0;
double avg=0.0;
for(int j=0;j<3;j++) {
sum=sum+score[i][j];
}
avg=(double)sum/score[i].length;
System.out.println(i+1+"번학생 총합:"+sum+" 평균:"+avg);
}*/
//문3 학급 수, 각 학급의 학생 수, 그리고 모든 학생의 점수를 읽어서 합계와 평균을 구하기
// 합계와 평균은 학급 단위와 전교생 단위
/* 출력형태
*
* //입력 묻기
* 학급 수 : 2(숫자입력 )
*
* 1반의 학생 수 : 정수입력(3)
* 1반 1번의 점수 : 점수입력(50)
* 1반 2번의 점수 : 점수입력(63)
* 1반 3번의 점수 : 점수입력(72)
*
* 2반의 학생 수 : 정수입력(2)
* 2반 1번의 점수 : 점수입력(79)
* 2반 2번의 점수 : 점수입력(43)
*
* //결과 출력
* 반 합계 평균
* ================
* 1반 185 61.7
* 2반 122 61.0
* =================
* 총계 307 61.4
*
*/
Scanner scan=new Scanner(System.in);
System.out.println("학급수를 입력하세요");
int num=scan.nextInt();
//중요!!! int[][]score=new int [num][]; 먼저 행(열의 값을 가지고있는 주소값)을 선언
for(int a=0;a<num;a++) {
System.out.println("학생수를 입력하세요");
int num01=scan.nextInt();
//중요!!! score[i]=new int[num01]; 위에 선언한 행의 주소값이 가르키고있는 열로가서 공간을 만들어라의 의미
//행먼저 선언해줄수 있음을 기억!!!
int[][]score=new int [num][num01];
int sum=0;
double avg=0.0;
for(int i=0;i<num01;i++) {
System.out.println((a+1)+"반의"+(i+1)+"번째학생 점수를 입력하세요");
int jumsu=scan.nextInt();
score[a][i]=jumsu;
sum=sum+score[a][i];
}
avg=(double)sum/score[a].length;
System.out.println("총합은:"+sum+"평균은:"+avg);
System.out.println();
}
}
}
今日先生が提出した問題の中で理解できなかった部分.どうしたんですか.多次元配列が宣言された時に、別々に宣言されていましたが、成立したのでしょうか?!
疑問がある
上の質問の中で下の部分!!
int[][]score=new int [num][];
for(int a=0;a
説明のかわりに下図を使う
変数を気にしないで、画像の構造を見て、、、
図に示すように、num(行のアドレス値を有する)->num[0](行のインデックスが列のアドレス値を有する)->num[0][0](値を含む)
この構造で保存します.
int[][]score=new int [num][]; 先に明行して、それから
score[i]=new int[num01];for文ではscore[i]の1行目の列に新しい空間範囲を作成できます.
どうしたんですか.各アドレスの値は格納されています.これは、必要に応じて検索してロードする方法です.
package study_0330;
import java.util.Scanner;
public class study_0330_01 {
public static void main(String[] args) {
// 문4) 행의 개수를 받고 열의 개수를 받아서 출력하기
Scanner scan=new Scanner(System.in);
System.out.println("행의 개수를 입력하세요.");
int row =scan.nextInt();
int [][]modu =new int[row][]; //먼저 행(열의 값을 가지고있는 주소값)을 선언, 행먼저 선언해줄수 있음을 기억!!!
for(int i=0;i<modu.length;i++) {
System.out.println((i+1)+"번째행의 열의 개수를 입력하세요.");
int col =scan.nextInt();
modu[i]=new int[col]; //위에 선언한 modu[i]번째 행이 저장한 주소값이 가르키고있는 열의 새로운 공간을 만들어라의 의미
for(int j=0;j<modu[i].length;j++) {
System.out.println((i+1)+"번째행의"+(j+1)+"열의 값를 입력하세요.");
int colNum =scan.nextInt();
modu[i][j]=colNum;
}
}
for(int i=0;i<modu.length;i++) {
System.out.print((i+1)+"행 출력");
for(int j=0;j<modu[i].length;j++) {
System.out.print(modu[i][j]+" ");
}
System.out.println();
}
}
}
Reference
この問題について(Javaベース(多次元配列)), 我々は、より多くの情報をここで見つけました https://velog.io/@cbn1218/자바기초다차원-배열テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol