JAVA Day-9
8442 ワード
2 Dアレイ
これまでは1 Dアレイを使用していました.
2 D配列を学び、それをどのように利用するかを学びます.
2 Dアレイとは
正方配列とは、横と列の個数が等しいことを意味します.
非キューブ配列とは、横、列の個数が異なることを意味します.
配列は配列に存在する
RAMでの表示
わかりやすい様子
方法:arrData[0]で+0配列にアクセス
arrData[0][2]の場合、アクセス3の値
arrDataであれば[2][1]、アクセス8の値
2 D配列は、値にアクセスするために配列に2回アクセスする必要があります.
一度に近似して配列を修正すること自体も可能です
ex) int arrData[0] = arData;
2 Dアレイの宣言
メソッドを宣言します.자료형 [][] 배열명 = new 자료형[행][열];
자료형 [][] 배열명 = {
{값1, 값2...},
{값1, 값2...}
};
3 D配列とは
3面4行5列
4次元配列とは?
2の3面4行5列
ショップマネージャの作成
に質問ナイキ売り場の各支店、各年齢層の売上を求め、支店、各年齢層の総売上、平均売上、総売り場の総売上、平均売上を示すコードを書き出します。
支店は3店舗(江南、瑞草、松坡)あり、年齢は全年齢、子供売り場に分かれている.
view側はオプションを使用してコミュニケーションします.
考えてみろ。
この売り場は全部で3つ、年齢別の2つで、全部で6つ並んでいます.ここではすべての年齢と子供の区別があいまいなので、私はすべての年齢を大人にします.
成人江南(カンナム)、瑞草(ソチョ)、松坡(ソンパ)、子供江南(カンナム)、瑞草(ソチョ)、松坡(ソンパ)を1つの階層に分けて販売し、1つの階層に年齢を含めて2つの階層に売場を並べばいい.
視覚的には
アレイの様子
江南A[0][0]、瑞草A[0][1]、松坡A[0][2]
江南K[1][0]、瑞草K[1][1]、宋派K[1][2]
作成
자료형 [][] 배열명 = new 자료형[행][열];
자료형 [][] 배열명 = {
{값1, 값2...},
{값1, 값2...}
};
メインメソッドで2 D配列を作成します.
2 D配列は想像通りでいいです.
ここで整数を用いる理由は売上高が整数で表されるためである.
int [][] arrIncome = new int [2][3];
次に売上高をそれぞれ入力しますshowinputを使用し、[i][j]2次元配列にすべての値を含めるので、まずfor文iを繰り返し、for文にj繰り返し文を作成し、次に繰り返し実行します.
また、繰り返し文では、繰り返し回数が複数回使用される可能性があるので、変数として格納します.
arIncomeの値は文字列なのでエラーが発生しました.それを整数型に変換して入れましょう.また,すべての売上高が入力されると加算されるのでsumを作成して積算関数として格納する.
int rLength = arrIncome.length;
int cLength = arrIncome[0].length;
for (int i = 0; i < rLength; i++) {
for (int j = 0; j <cLength; j++) {
arrIncome[i][j] = Integer.parseInt(JOptionPane.showInputDialog(arrName[i][j]+menuMsg));
sum += arrIncome[i][j];
}
}
cLengthとrLengthにいくら乗じて、総売上高の平均値を求めることができます.また、実数型で素数ポイントを作成し、2番目の桁数に変換してから実数型に変換します.
avg = Double.parseDouble(String.format("%.2f", (double)sum/(rLength*cLength)));
また、各年齢層の売上高と各支店の総売上高も求めています.
各年齢層の売上高を求めるために、まず各年齢層の売上高ランキングを作成する.
年齢別に江南から松坡売場までは、1列目の和、2列目の和を1つずつ入れればいいのですが、列の長さは2を1次元に並べばいいのです.
また,配列に値を含めるためには,iを繰り返すだけでよい.
配列名:arasum
売り場別には江南の大人、子供の和/瑞草の大人、子供の和/松坡の大人、子供の和、長さは3人で1次元に並べばいいので、それを含めてjを繰り返すといいでしょう.
配列名:arbsum
int [] arAsum = new int[2];
int [] arBsum = new int[3];
for (int i = 0; i < rLength; i++) {
result += "-------------------------\n";
for (int j = 0; j <cLength; j++) {
arrIncome[i][j] = Integer.parseInt(JOptionPane.showInputDialog(arrName[i][j]+menuMsg));
sum += arrIncome[i][j];
arAsum[i] += arrIncome[i][j];
arBsum[j] += arrIncome[i][j];
}
}
各年齢層の売上高は、児童と成人の売上高から求め、成人は3、児童は3に分けて、児童と成人の平均売上高をそれぞれ求めることができる.
従って、総売上高ごとに長さ3のarbcsumが得られる.lengthを用いて分割し,小数点2桁で表すとうっかり変換して値を含む.また、この値の長さは2なので、平均1次元配列を個別に作成します.
配列名:aAvg、繰り返し長さ2
double [] aAvg = new double[2];
for (int i = 0; i < rLength; i++) {
aAvg[i] = Double.parseDouble(String.format("%.2f", (double)arAsum[i]/arBsum.length));
}
各売り場の売上高は、江南(カンナム)、瑞草(ソチョ)、松坡(ソンパ)をベースに江南(カンナム)で2、瑞草(ソチョ)で2、松坡(ソンパ)で2に分けてこそ、各売り場の平均売上高を求めることができる.そのため、各売り場の売上高のうち長さが2のARASUMです.lengthを用いて平均売上高を求め,上のように1次元配列を装着して値を格納する.
配列名:bAvg、繰返し長さ3
double [] bAvg = new double[3];
for (int i = 0; i < cLength; i++) {
bAvg[i] = Double.parseDouble(String.format("%.2f", (double)arBsum[i]/arAsum.length));
}
これまでに作成したfor反復文を最大限に利用してresultに蓄積することで,コード量を減らし,効率を向上させることができる.
まずresultの変数を初期化し、売場名が重複するので、売場名も順番にリストします.配列名は2 D配列で表すこともできます.
成人は江南A、児童は江南K
また、結果が多いので、少し線を足しましょう.
String [][] arrName = {{"강남K", "서초K", "송파K"},{"강남A","서초A","송파A"}};
for (int i = 0; i < rLength; i++) {
result += "-------------------------\n";
for (int j = 0; j <cLength; j++) {
arrIncome[i][j] = Integer.parseInt(JOptionPane.showInputDialog(arrName[i][j]+menuMsg));
sum += arrIncome[i][j];
arAsum[i] += arrIncome[i][j];
arBsum[j] += arrIncome[i][j];
result += arrName[i][j] + " 매출액" + arrIncome[i][j]+"백만원\n";
}
}
ここでは年齢別売上高の名称も発表した.子供の売り場を表示するために、大人の売り場です.
String [] aName = {"키즈점", "성인점"};
for (int i = 0; i < rLength; i++) {
aAvg[i] = Double.parseDouble(String.format("%.2f", (double)arAsum[i]/arBsum.length));
result += aName[i]+" 총 매출액 " + arAsum[i] + "백만원\n";
result += aName[i] + " 평균 매출액 " + aAvg[i] + "백만원\n";
result += "-------------------------\n";
}
String [] bName = {"강남점", "서초점", "송파점"};
for (int i = 0; i < cLength; i++) {
bAvg[i] = Double.parseDouble(String.format("%.2f", (double)arBsum[i]/arAsum.length));
result += bName[i]+" 총 매출액 " + arBsum[i] + "백만원\n";
result += bName[i] + " 평균 매출액 " + bAvg[i] + "백만원\n";
result += "-------------------------\n";
}
result += "총 매출액 " + sum + "백만원\n" + "평균 매출액 " + avg + "백만원\n";
JOptionPane.showMessageDialog(null, result);
これまでに作成されたコードpackage myTest;
import javax.swing.JOptionPane;
//나이키 매장의 지점별, 연령별 각 매출액을 구하고 지점, 연령별 총 매출액, 평균 매출액, 총 매장의 매출액, 평균 매출액을 구하시오
public class ArrShop {
public static void main(String[] args) {
int [][] arrIncome = new int [2][3];
int rLength = arrIncome.length;
int cLength = arrIncome[0].length;
int sum = 0;
String menuMsg = "매출을 입력하세요";
String [][] arrName = {{"강남K", "서초K", "송파K"},{"강남A","서초A","송파A"}};
String [] aName = {"키즈점", "성인점"};
String [] bName = {"강남점", "서초점", "송파점"};
int [] arAsum = new int[2];
int [] arBsum = new int[3];
double [] aAvg = new double[2];
double [] bAvg = new double[3];
double avg = 0.0;
String result = "";
for (int i = 0; i < rLength; i++) {
result += "-------------------------\n";
for (int j = 0; j <cLength; j++) {
arrIncome[i][j] = Integer.parseInt(JOptionPane.showInputDialog(arrName[i][j]+menuMsg));
sum += arrIncome[i][j];
arAsum[i] += arrIncome[i][j];
arBsum[j] += arrIncome[i][j];
result += arrName[i][j] + " 매출액" + arrIncome[i][j]+"백만원\n";
}
}
result += "-------------------------\n";
avg = Double.parseDouble(String.format("%.2f", (double)sum/(rLength*cLength)));
//연령별 평균 매출액
for (int i = 0; i < rLength; i++) {
aAvg[i] = Double.parseDouble(String.format("%.2f", (double)arAsum[i]/arBsum.length));
result += aName[i]+" 총 매출액 " + arAsum[i] + "백만원\n";
result += aName[i] + " 평균 매출액 " + aAvg[i] + "백만원\n";
result += "-------------------------\n";
}
//지점별 평균 매출액
for (int i = 0; i < cLength; i++) {
bAvg[i] = Double.parseDouble(String.format("%.2f", (double)arBsum[i]/arAsum.length));
result += bName[i]+" 총 매출액 " + arBsum[i] + "백만원\n";
result += bName[i] + " 평균 매출액 " + bAvg[i] + "백만원\n";
result += "-------------------------\n";
}
result += "총 매출액 " + sum + "백만원\n" + "평균 매출액 " + avg + "백만원\n";
JOptionPane.showMessageDialog(null, result);
}
}
Reference
この問題について(JAVA Day-9), 我々は、より多くの情報をここで見つけました https://velog.io/@km2535/JAVA-Day-9テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol