Java Switch语句和双值
我正在学习如何使用switch语句。我正试图创建一个购物车的项目出售在杂货店。我必须创建一个程序,将售出物品的价值相加,然后打印最终价值。这是我到目前为止所做的,但是当我终止我的程序时,我得到了一个错误,它没有显示最终的值 非常感谢您的帮助Java Switch语句和双值,java,switch-statement,Java,Switch Statement,我正在学习如何使用switch语句。我正试图创建一个购物车的项目出售在杂货店。我必须创建一个程序,将售出物品的价值相加,然后打印最终价值。这是我到目前为止所做的,但是当我终止我的程序时,我得到了一个错误,它没有显示最终的值 非常感谢您的帮助 package Exercises; import java.util.Scanner; public class CalculatingSales { public static void main(String[] args) {
package Exercises;
import java.util.Scanner;
public class CalculatingSales {
public static void main(String[] args)
{
int total = 0;
int prod1Count = 0, prod2Count = 0, prod3Count = 0, prod4Count = 0, prod5Count = 0;
Scanner input = new Scanner(System.in);
System.out.printf("%s%n%s%n %s%n %s%n %s%n","Enter product number sold: " //prompt user to enter input
,"NOTE: Product number must be between 1 & 5",
"To terminate input... ",
"On UNIX/Linus?mac OS X type <Ctrl> d then press Enter",
"On Windows type <Ctrl> z then press Enter");
while(input.hasNext())
{
int item = input.nextInt();
total =+ item;
double product1;
double product2;
double product3;
double product4;
double product5;
switch (item + total)
{
case 1:
product1 = 2.98;
++prod1Count;
break;
case 2:
product2 = 4.50;
++prod2Count;
break;
case 3:
product3 = 9.98;
++prod3Count;
break;
case 4:
product4 = 4.49;
++prod4Count;
break;
case 5:
product5 = 6.87;
++prod5Count;
break;
default:
System.out.println("ERROR. You did not enter a value between 1 & 5!");
break;
}//end switch
}//end while
double shoppingCart = (double) total;
System.out.printf("%nTotal retail value of all products is: $%d", shoppingCart);
}
}
成套练习;
导入java.util.Scanner;
公共类计算销售{
公共静态void main(字符串[]args)
{
int-total=0;
int prod1Count=0,prod2Count=0,prod3Count=0,prod4Count=0,prod5Count=0;
扫描仪输入=新扫描仪(System.in);
System.out.printf(“%s%n%s%n%s%s%n%s%n%s%n”,“输入售出的产品编号:”//提示用户输入
,“注意:产品编号必须介于1和5之间”,
“要终止输入…”,
“在UNIX/Linus?mac OS X上键入d,然后按Enter键”,
“在Windows上键入z,然后按Enter”);
while(input.hasNext())
{
int item=input.nextInt();
总数=+项;
双产品1;
双产品2;
双产品3;
双产品4;
双产品5;
开关(项目+总计)
{
案例1:
产品1=2.98;
++生产计数;
打破
案例2:
产品2=4.50;
++产品计数;
打破
案例3:
产品3=9.98;
++生产3计数;
打破
案例4:
产品4=4.49;
++生产4计数;
打破
案例5:
产品5=6.87;
++生产5计数;
打破
违约:
System.out.println(“错误。您没有输入介于1和5之间的值!”);
打破
}//终端开关
}//结束时
双倍购物车=(双倍)总计;
System.out.printf(“%n所有产品的总零售价值为:$%d”,shoppingCart);
}
}
问题在于:
System.out.printf("%nTotal retail value of all products is: $%d", shoppingCart);
printf
需要一个int
,但您正在传递一个double
作为参数
试试这个:
System.out.printf("%nTotal retail value of all products is: $%.2f", shoppingCart);
您还应该更改
total=+项代码>至<代码>总计+=项目代码>该代码存在许多问题。最后出现的错误是因为您试图输出一个double并指定一个要打印的整数<代码>$%d
应该是$%f
,但是要使货币显示到小数点后两位,可以使用$%.2f
。有关格式设置的详细信息,请参阅本文档
然而,主要的问题在你的循环中。switch语句应该只传递您想要比较的项目编号,并相应地执行一些操作。因此开关必须是switch(item)
。有一种更简单的方法来计算总数和切换。您可以通过将人员每次通过循环选择的产品的值添加到一个运行的total
。退出时,它应为所有选定项目的总金额。如果您输入的项目超出范围,则实际上会添加0
最后,您确实应该关闭扫描仪以进行适当的清理,因此input.close()
也是一个好主意
代码可能类似于:
package Exercises;
import java.util.Scanner;
public class CalculatingSales {
public static void main(String[] args)
{
double total = 0.0;
Scanner input = new Scanner(System.in);
System.out.printf("%s%n%s%n %s%n %s%n %s%n","Enter product number sold: " //prompt user to enter input
,"NOTE: Product number must be between 1 & 5",
"To terminate input... ",
"On UNIX/Linus?mac OS X type <Ctrl> d then press Enter",
"On Windows type <Ctrl> z then press Enter");
while(input.hasNext())
{
double prodvalue = 0.0;
int item = input.nextInt();
switch (item)
{
case 1:
prodvalue = 2.98;
break;
case 2:
prodvalue = 4.50;
break;
case 3:
prodvalue = 9.98;
break;
case 4:
prodvalue = 4.49;
break;
case 5:
prodvalue = 6.87;
break;
default:
System.out.println("ERROR. You did not enter a value between 1 & 5!");
break;
}//end switch
total += prodvalue;
}//end while
double shoppingCart = total;
System.out.printf("%nTotal retail value of all products is: $%.2f", shoppingCart);
input.close();
}
}
成套练习;
导入java.util.Scanner;
公共类计算销售{
公共静态void main(字符串[]args)
{
双倍合计=0.0;
扫描仪输入=新扫描仪(System.in);
System.out.printf(“%s%n%s%n%s%s%n%s%n%s%n”,“输入售出的产品编号:”//提示用户输入
,“注意:产品编号必须介于1和5之间”,
“要终止输入…”,
“在UNIX/Linus?mac OS X上键入d,然后按Enter键”,
“在Windows上键入z,然后按Enter”);
while(input.hasNext())
{
双prodvalue=0.0;
int item=input.nextInt();
开关(项目)
{
案例1:
prodvalue=2.98;
打破
案例2:
prodvalue=4.50;
打破
案例3:
prodvalue=9.98;
打破
案例4:
prodvalue=4.49;
打破
案例5:
prodvalue=6.87;
打破
违约:
System.out.println(“错误。您没有输入介于1和5之间的值!”);
打破
}//终端开关
总+=产品价值;
}//结束时
双购物车=总计;
System.out.printf(“%n所有产品的总零售价值为:$%.2f”,shoppingCart);
input.close();
}
}
有很多更好的方法可以做到这一点,但随着时间的推移,你可能会学到如何简化这个程序。我想让代码保持某种结构,就像您处理事情的方式一样
如果您需要每个项目的计数,那么您必须修改上面的代码以将其添加回。我意识到这个解决方案可能过于简化了您的需求,但在基本层面上,它保持了总体正确。它应该是
total+=item代码>。