2017-04-10 18 views
-4

私は+=を使用していると思っていますが、結果の合計は合計されますが、スイッチケースの(+ =)の機能が動作していません

import java.util.Scanner; 
    public class Week3_Lab { 
    public static void main(String[]args){ 
     Scanner input = new Scanner(System.in); 



    int product; 
     int amount; 

     while(true){ 

     System.out.print("Enter the product number(1-3): "); 
     product = input.nextInt(); 

     if (product == -1){ 

      break; 
     } 

     System.out.print("Enter the total amount of product: "); 
     amount = input.nextInt(); 

     num(product, amount); 
     } 


    } 


    public static int num(int product , int amount){ 
     double total_1 = 0; 
     double total_2 = 0; 
     double total_3 = 0; 

     switch (product){ 

     case 1 : 
     total_1 += amount * 2.98; 
     break; 

     case 2 : 
     total_2 += amount * 4.50; 
     break; 

     case 3 : 
     total_3 += amount * 9.98; 
     break; 

    } 
     System.out.println("The total of product 1 is : "+ total_1); 
     System.out.println("The total of product 2 is : "+ total_2); 
     System.out.println("The total of product 3 is : "+ total_3); 

     return product; 

    } 
    } 
+0

「商品」と「金額」にはどのような価値がありますか?どのように "働いていない"ですか? –

+1

'double total_X'定義をメソッド定義の外に移動し、毎回クリアされないようにしたいとします。 –

+0

結果には次のような質問があるため、 – Learning

答えて

0

あなたのtotal_1 0に初期化されているので、プログラムは、以下に示すように、出力は単に(amount * 2.98)です:

total_1 = 0 + (amount * 2.98); 

同じ概念が同様にtotal_2total_3に適用されます。

+0

私はしようとしましたが、動作しません、現在の方法は、メソッドから変数を取り出しているようです。 – Learning

1

変数total_1, total_2 and total_3はローカルであり、メソッド呼び出し間で共有されないため、呼び出しごとに0に初期化されます。 メソッド本体外で定義する必要がない場合は、定義してください。

static double total_1=0; 
static double total_2=0; 
static double total_3=0; 

public static int num(int product , int amount){ 
    switch (product){ 
     //... 
    } 
//... 
} 
+1

大体そうです。インスタンス変数であり、ロジックが非静的メソッドであった方が良いでしょう。 –

+0

ありがとう、それは動作します – Learning

関連する問題