1

Java の学習を始めたばかりで、switch ステートメントを使用する必要がありますが、ケースごとに計算のすべての値を追跡し、それを合計する必要があります。どうすればできますか?

ここに私のコードがあります

            switch(productNo)
            {
                case 1:
                    lineAmount1 = quantity * product1;
                    orderAmount = +lineAmount1;
                    textArea.append(productNo +"\t"
                            + quantity + "\t" 
                            + "$" + lineAmount1 +"\t"
                            + "$" + orderAmount + "\n" );


                    break;
                case 2:
                    lineAmount2 = quantity * product2;
                    orderAmount = + lineAmount2;
                    textArea.append(productNo +"\t"
                            + quantity + "\t" 
                            + "$" + lineAmount2 +"\t"
                            + "$" + orderAmount + "\n" );


                    break;

                case 3:
                    lineAmount3 = quantity * product3;
                    orderAmount = +lineAmount3;
                    textArea.append(productNo +"\t"
                            + quantity + "\t" 
                            + "$" + lineAmount3 +"\t"
                            + "$" + orderAmount + "\n" );

                    break;

                case 4:
                    lineAmount4 = quantity * product4;
                    orderAmount = +lineAmount4;
                    textArea.append(productNo +"\t"
                            + quantity + "\t" 
                            + "$" + lineAmount4 +"\t"
                            + "$" + orderAmount + "\n" );

                    break;

                case 5:
                    lineAmount5 = quantity * product5;
                    orderAmount = +lineAmount5;
                    textArea.append(productNo +"\t"
                            + quantity + "\t" 
                            + "$" + lineAmount5 +"\t"
                            + "$" + orderAmount);

                    break;

            }
4

2 に答える 2

0

switch-case を使用する代わりに、ケースで何も違うことをしていないので、ループで同じことを行うことができます -

int lineAmount = 0;
int orderAmount = 0;
for (int product : products) {
lineAmount = quantity * product;
orderAmount += lineAmount;
textarea.append(productNo +"\t"
                        + quantity + "\t" 
                        + "$" + lineAmount +"\t"
                        + "$" + orderAmount + "\n" );
}

このコードは、switch case を呼び出していた製品のリストがあるという前提に基づいています...そのコード全体をこれに置き換えることができます...特定の製品を特定の番号に関連付ける必要がある場合は、 Enum を使用して、代わりにループ内で使用できます。

于 2013-06-15T16:58:29.497 に答える
0

あなたの質問からあなたが探しているものは明らかではありませんが、私は推測します。合計だけでなく、5 つの項目のそれぞれの行の合計を取得しようとしている場合は、switch ステートメントの前のどこかに定義された行の合計に配列を使用できます。

double[] lineTotals = new double[5];
double orderTotal = 0;

次に、インデックスが 1 ではなく 0 から始まることに注意して、各項目の値を配列に入れることができます。

switch(productNo) {
    case 1:
        lineAmounts[0] = quantity * products[0];
        orderAmount = +lineAmounts[0];
        textArea.append(productNo +"\t"
            + quantity + "\t" 
            + "$" + lineAmount1 +"\t"
            + "$" + orderAmount + "\n" );
        break;

    case 2: ... etc ...
}
于 2013-06-15T17:02:37.480 に答える