2016-02-12 74 views
0

我有一些麻煩讓我的總和功能工作。我試圖創建一個程序,要求使用開關結構和定點循環的產品編號和數量。它將運行直到輸入0。它應該計算輸入的產品總數和所有產品的總價值。數量工作得很好。這是僅對輸入的第一個產品有效的總價值。我無法獲得總數的總和,直到按下0才繼續添加。任何幫助將不勝感激!!開關語句與前哨循環

import java.util.Scanner; 

    public class Mailorder { 

     public static void main(String[] args) { 

    //create a scanner 
    Scanner input = new Scanner(System.in); 

    //declare variables 

    double product1 = 3.75; 
    double product2 = 5.95; 
    double product3 = 8.75; 
    double product4 = 6.92; 
    double product5 = 8.75; 
    double product6 = 7.87; 
    double total = 0.00; 

    //read in product # 
    System.out.print("Enter a product number: "); 
     int product = input.nextInt(); 

    //read in quantity sold 
    System.out.print("Enter quantity sold for 1 day: "); 
     int quantity = input.nextInt(); 

    //switch case 
    switch (product) 
     { 
     case 1: total = product1 * quantity; break; 
     case 2: total = product2 * quantity; break; 
     case 3: total = product3 * quantity; break; 
     case 4: total = product4 * quantity; break; 
     case 5: total = product5 * quantity; break; 
     case 6: total = product6 * quantity; break; 
     default: System.out.println("ERROR: Invalid product number"); 
     } 

    //keep reading data until the input is 0 
    int sum1 = 0; 
      while (quantity != 0) { 
        sum1 += quantity; 

    int sum2 = 0; 
      while (total != 0) { 
        sum2 +=total; 
     } 
    //read the next data 
      System.out.print("Enter a product number: "); 
        product = input.nextInt(); 

      System.out.print("Enter quantity sold for 1 day: "); 
        quantity = input.nextInt(); 
    } 

    //print results 
    System.out.println("The total number of products sold last week " + sum1); 
    System.out.println("The total retail value of all products sold last week " + sum2); 

} 
} 
+1

如果使用數組而不是六個不同的變量,則不需要該開關。 –

+0

謝謝,但我必須使用開關 – jake

回答

1

這裏有幾個範圍界定問題。

首先,您已將switch語句放在循環外部。你應該把它放在循環中。

其次,sum2有一個範圍問題。它在你的哨兵循環內聲明,但在外部引用。我不知道爲什麼你有一個嵌套循環添加到sum2。以下是解決了這些問題的代碼:

public class Mailorder { 

    public static void main(String[] args) { 

     //create a scanner 
     Scanner input = new Scanner(System.in); 

     //declare variables 

     double product1 = 3.75; 
     double product2 = 5.95; 
     double product3 = 8.75; 
     double product4 = 6.92; 
     double product5 = 8.75; 
     double product6 = 7.87; 

     //read in product # 
     System.out.print("Enter a product number: "); 
     int product = input.nextInt(); 

     //read in quantity sold 
     System.out.print("Enter quantity sold for 1 day: "); 
     int quantity = input.nextInt(); 


     //keep reading data until the input is 0 
     int sum1 = 0; 
     int sum2 = 0; 
     while (quantity != 0) { 
      sum1 += quantity; 

      double total = 0.00; 
      //switch case 
      switch (product) 
      { 
       case 1: total += product1 * quantity; break; 
       case 2: total += product2 * quantity; break; 
       case 3: total += product3 * quantity; break; 
       case 4: total += product4 * quantity; break; 
       case 5: total += product5 * quantity; break; 
       case 6: total += product6 * quantity; break; 
       default: System.out.println("ERROR: Invalid product number"); 
      } 
      sum2 += total; 

      //read the next data 
      System.out.print("Enter a product number: "); 
      product = input.nextInt(); 

      System.out.print("Enter quantity sold for 1 day: "); 
      quantity = input.nextInt(); 
     } 


     //print results 
     System.out.println("The total number of products sold last week " + sum1); 
     System.out.println("The total retail value of all products sold last week " + sum2); 

    } 
} 
+0

謝謝。這與我一直試圖實現的更接近,但是我的總零售價格是關閉的 – jake

+0

「off」是什麼意思?請記住,大多數真實值不能在計算機上精確表示。在處理代表貨幣的變量時,您應該使用代表美分的整數,而不是代表美元的雙數。 – FredK

+0

我得到它的工作,我不得不改變int sum2 sum2 = 0。現在它適用於我。我試圖把這些循環放在這麼多地方。我的大腦根本看不到它。我明白我現在做錯了什麼,並且不能爲你的幫助而感謝你。這是一個悲傷的殘酷的12小時看這個。現在我會慚愧地慚愧。我會像你所建議的那樣使用它代表美分。哦,我很抱歉,我並不是說你離開了,你已經死了。再次感謝您的幫助! – jake