在 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 美元。编写一个应用程序,读取一系列数字对作为
如下:
一种。
产品编号
B.
售出数量
你的程序应该使用
转变
声明,以确定每个零售价
产品。它应该计算并显示所有销售产品的总零售价值。
使用哨兵控制的循环来确定程序何时应该停止
循环并显示最终结果。
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) No default case
2) You need to ask the user inside loop again to enter 0
to exit the
loop:
所以,
1) Add default: break;
inside switch
2) Add below code after the switch statement:
System.out.println("Please enter the product number 1-5. Enter 0 to stop. :");
productNumber=keyboard.nextInt();
是否需要循环获取所有产品?如果您只需要 1 个产品,您可以删除以下循环
while(productNumber!=0)
如果您可以获取多个产品,请在 switch 语句后添加以下行以获取下一个产品:
productNumber=keyboard.nextInt();
我正在尝试编写作业的程序有问题。这是问题和我写的代码:
一家邮购公司销售五种产品,其零售价分别为
如下:
产品 1:2.98 美元,产品 2:4.50 美元,产品 3:9.98 美元,产品 4:4.49 美元和
产品 5:6.87 美元。编写一个应用程序,读取一系列数字对作为
如下:
一种。
产品编号
B.
售出数量
你的程序应该使用
转变
声明,以确定每个零售价
产品。它应该计算并显示所有销售产品的总零售价值。
使用哨兵控制的循环来确定程序何时应该停止
循环并显示最终结果。
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) No default case
2) You need to ask the user inside loop again to enter
0
to exit the loop:
所以,
1) Add
default: break;
inside switch2) Add below code after the switch statement:
System.out.println("Please enter the product number 1-5. Enter 0 to stop. :");
productNumber=keyboard.nextInt();
是否需要循环获取所有产品?如果您只需要 1 个产品,您可以删除以下循环
while(productNumber!=0)
如果您可以获取多个产品,请在 switch 语句后添加以下行以获取下一个产品:
productNumber=keyboard.nextInt();