import java.util.*;
public class CopyOfPay
{
public static void main(String[] args)
{
String name = "";         //商品名称
double price = 0;        //商品价格
int count = 0;               //购入数量
int goodNo;              //商品编号
double total = 0;        //购物总金额
double finalPay = 0;     //打折后需付款
double payment;          //实际交费金额
double discount = 0.8;  //会员折扣
double returnMoney;     //找钱



/*打印产品清单*/
System.out.println("我行我素购物管理系统 > 购物结算\n\n");
System.out.println("****************************************");
System.out.println("请选择购买的商品编号; \n");
System.out.println("1.T恤  2.网球鞋  3.网球拍");
System.out.println("****************************************\n");

Scanner input = new Scanner(System.in);
String answer = "y";                      //标识是否继续
while(answer.equals("y"))                //answer的值为"y"时执行循环
{
System.out.print("请输入商品编号:");  //提示输入商品编号
goodNo = input.nextInt();            //从键盘获取商品编号
System.out.print("请输入购买数量:");  //提示输入购买数量
count = input.nextInt();            //从键盘获取购买数量
switch(goodNo)
{
case 1:   //输入"1"时获得T恤的价格
name = "T恤";
price = 245;
break;
case 2:   //输入"2"时获得网球鞋的价格
name = "网球鞋";
price = 570;
break;
case 3:   //输入"3"时获得网球拍的价格
name = "网球拍";
price = 320;
break;
default:  //输入其他无效编号时
System.out.println("输入错误!");
    break;
}
System.out.println(name + "\t" + "¥" + price + "\t\t" + "¥" + price * count);  //输出商品名称和价格
System.out.print("\n是否继续(y/n)");
answer = input.next();                           //用户再次输入是否继续的信息
}
total=price * count;
//实际购物的总金额
total = total + price * count;
//打折后的金额
finalPay = total * discount;


System.out.println("折扣: " + discount);
System.out.println("金额总计¥" + finalPay);
System.out.print("实际付费金额:");
payment = input.nextInt(); 
returnMoney = payment - finalPay;
System.out.println("实际交费¥" + payment);
System.out.println("找钱    ¥" + returnMoney);
}
}哪位大虾能帮偶看下啊,为什么我每次算出来的总金额都会比实际的多出80呢?看了N遍也没看出来是哪里出了问题

解决方案 »

  1.   

    payment = input.nextInt();这句话是什么意思?
      

  2.   

    //total=price * count; 
    //实际购物的总金额 
    total = total + price * count; 
    应该把第一个total注释
      

  3.   

    再说了,payment应该接收的应该比finalpay多才行啊
      

  4.   

    额,偶发现问题啦 total=price * count; 这句删掉,然后把total = total + price * count; 这句放到循环里去就好了~谢谢你们啊~~~~
      

  5.   

    import java.util.*; 
    public class CopyOfPay 

    public static void main(String[] args) 

    String name = "";        //商品名称 
    double price = 0;        //商品价格 
    int count = 0;              //购入数量 
    int goodNo;              //商品编号 
    double total = 0;        //购物总金额 
    double finalPay = 0;    //打折后需付款 
    double payment;          //实际交费金额 
    double discount = 0.8;  //会员折扣 
    double returnMoney;    //找钱 
    /*打印产品清单*/ 
    System.out.println("我行我素购物管理系统 > 购物结算\n\n"); 
    System.out.println("****************************************"); 
    System.out.println("请选择购买的商品编号; \n"); 
    System.out.println("1.T恤  2.网球鞋  3.网球拍"); 
    System.out.println("****************************************\n"); Scanner input = new Scanner(System.in); 
    String answer = "y";                      //标识是否继续 
    while(answer.equals("y"))                //answer的值为"y"时执行循环 

    System.out.print("请输入商品编号:");  //提示输入商品编号 
    goodNo = input.nextInt();            //从键盘获取商品编号 
    System.out.print("请输入购买数量:");  //提示输入购买数量 
    count = input.nextInt();            //从键盘获取购买数量 
    switch(goodNo) 

    case 1:  //输入"1"时获得T恤的价格 
    name = "T恤"; 
    price = 245; 
    total+=price * count; 
    break; 
    case 2:  //输入"2"时获得网球鞋的价格 
    name = "网球鞋"; 
    price = 570; 
    total+=price * count; 
    break; 
    case 3:  //输入"3"时获得网球拍的价格 
    name = "网球拍"; 
    price = 320; 
    total+=price * count; 
    break; 
    default:  //输入其他无效编号时 
    System.out.println("输入错误!"); 
    break; 

    System.out.println(name + "\t" + "¥" + price + "\t\t" + "¥" + total);  //输出商品名称和价格 
    System.out.print("\n是否继续(y/n)"); 
    answer = input.next();                          //用户再次输入是否继续的信息 

    finalPay = total * discount; 
    System.out.println("折扣: " + discount); 
    System.out.println("金额总计¥" + finalPay); 
    System.out.print("实际付费金额:"); 
    payment = input.nextInt(); 
    if(payment<finalPay)
    {
    System.out.print("错误,请重新输入:(必须多于"+finalPay+")");
    payment=input.nextInt();
    }
    returnMoney = payment - finalPay; 
    System.out.println("实际交费¥" + payment); 
    System.out.println("找钱    ¥" + returnMoney); 


    帮你改了一下,你原来的程序,只能计算最后一次所购的商品