簡體   English   中英

在Java中的switch語句上獲得無限循環

[英]Getting infinite loop on a switch statement in java

我正在嘗試為我的作業寫這個程序時遇到問題。 這是問題和我編寫的代碼:

一個郵購公司出售五種產品,零售價如下:
產品1:2.98美元,產品2:4.50美元,產品3:9.98美元,產品4:4.49美元,產品5:6.87美元。 編寫一個讀取一系列數字對的應用程序,如下所示:A.產品編號B.銷售數量您的程序應使用switch語句確定每種產品的零售價。 它應該計算並顯示所有已售產品的零售總額。 使用哨兵控制的循環來確定程序何時應停止循環並顯示最終結果。

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

        double totalCost1 = 0, totalCost2 = 0, totalCost3 = 0, totalCost4 = 0, totalCost5 = 0;

        System.out.println("Please enter the product number 1-5. Enter 0 to stop. :");

        int productNumber=keyboard.nextInt();

        while(productNumber!=0)
        {
            switch (productNumber)
            {
                case 1:
                    System.out.println("Enter quantity sold :");
                    double product1=keyboard.nextDouble();
                    totalCost1 = (2.98*product1);
                    break;
                case 2:
                    System.out.println("Enter quantity sold :");
                    double product2=keyboard.nextDouble();
                    totalCost2 = (4.50*product2);
                    break;
                case 3:
                    System.out.println("Enter Quantity sold :");
                    double product3=keyboard.nextDouble();
                    totalCost3 = (9.98*product3);
                    break;
                case 4:
                    System.out.println("Enter Quantity sold :");
                    double product4=keyboard.nextDouble();
                    totalCost4 = (4.49*product4);
                    break;
                case 5:
                    System.out.println("Enter Quantity sold :");
                    double product5=keyboard.nextDouble();
                    totalCost5 = (6.87*product5);
                    break;
            }
        }

        System.out.printf("Product 1: %.2f%nProduct 2: %.2f%nProduct 3: %.2f%nProduct 4: %.2f%nProduct 5: %.2f%n", totalCost1, totalCost2, totalCost3, totalCost4, totalCost5);
    }
}

當我運行此代碼時,它要求輸入產品編號。 輸入1-5的任何數字后,它會詢問已售出的數量。 當我給出任何數字時,它不斷詢問要賣出的數量,我做錯了什么?

您的代碼中有兩個問題:

1)沒有默認情況

2)您需要再次要求循環內的用戶輸入0退出循環:

所以,

1)添加default: break; 內部開關

2)在switch語句后添加以下代碼:

System.out.println("Please enter the product number 1-5. Enter 0 to stop. :");
productNumber=keyboard.nextInt();

您需要循環直到獲得所有產品嗎? 如果您只需要一種產品,則可以刪除以下循環

   while(productNumber!=0)

如果可以獲得多個產品,請在switch語句后添加以下行以獲取下一個產品:

  productNumber=keyboard.nextInt();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM