繁体   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