java新手求大神解答。主要求代码,有思路但是写不出啊。 10

T恤价格245网球鞋570网球拍320要求:1.循环输入商品编号和数量,系统自动计算没中商品的价格(单价*数量),累加到总金额2.输入N时,表示想结账,则推出循环开始结账... T恤价格245 网球鞋570 网球拍320
要求:
1.循环输入商品编号和数量,系统自动计算没中商品的价格(单价*数量),累加到总金额
2.输入N时,表示想结账,则推出循环开始结账
3.结账时,根据应付金额,输入实付金额,计算找零。
运行结果如下:
**********************************************
请选择购买的商品编号:
1.T恤 2.网球鞋 3.网球拍
**********************************************
输入购买商品编号:1
输入购买商品数量:2
T恤 ¥245.0 数量:2 合计¥490.0
是否继续(y/n):y

输入购买商品编号:2
输入购买商品数量:3
网球鞋 ¥570.0 数量:3 合计¥1710.0
是否继续(y/n):n

应付金额:2200.0
顾客支付:2500.0
找钱:300.0

这个题自己做的差不多了,最后应付金额不知道怎么实现累加啊,如上例怎么能让应付金额显示为2200,这个是难点- -想了半天了,不要告诉我用第一次循环的价格+第二次的,这我也知道,问题是怎么实现- -好难,最好给出整个题的代码
展开
 我来答
历盆郁7
2013-08-09 · TA获得超过4277个赞
知道大有可为答主
回答量:1795
采纳率:100%
帮助的人:922万
展开全部
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Scanner;

enum Huo {

    TX(1, "T恤", 245), WQX(2, "网球鞋", 570), WQP(3, "网球拍", 320);

    private int id;
    private String name;
    private double price;

    private Huo(int id, String name, double price) {
        this.id = id;
        this.name = name;
        this.price = price;
    }

    public int getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public double getPrice() {
        return price;
    }

    public static Huo getById(int id) {
        for (Huo item : Huo.values()) {
            if (item.id == id) {
                return item;
            }
        }
        return null;
    }
}

public class Test {

    private static Map<Integer, Integer> countMap = new HashMap<Integer, Integer>();

    private static double sum = 0;

    public static void main(String args[]) {

        Scanner in = new Scanner(System.in);
        while (true) {
            System.out.println("**********************************************");
            System.out.println("请选择购买的商品编号:");
            for (Huo item : Huo.values()) {
                System.out.print(item.getId() + ":" + item.getName() + "  ");
            }
            System.out.println();
            System.out.println("**********************************************");
            System.out.print("输入购买商品编号:");
            int id = in.nextInt();

            System.out.print("输入购买商品数量:");
            int count = in.nextInt();

            Integer tmp = countMap.get(id);
            if (tmp == null) {
                tmp = 0;
            }
            countMap.put(id, tmp + count);
            show();

            while (true) {
                System.out.print("是否继续(y/n):");
                String jixu = in.next();
                if ("Y".equalsIgnoreCase(jixu)) {
                    break;
                } else if ("N".equalsIgnoreCase(jixu)) {
                    System.out.print("请支付:");
                    double zhifu = in.nextDouble();
                    System.out.println("应付金额:" + sum);
                    System.out.println("客户支付:" + zhifu);
                    System.out.println("找钱:" + (zhifu - sum));
                    System.exit(0);
                } else {
                    System.out.print("输入错误");
                }
            }
        }
    }

    private static void show() {
        Iterator<Integer> it = countMap.keySet().iterator();
        while (it.hasNext()) {
            Integer key = it.next();
            Integer count = countMap.get(key);
            Huo huo = Huo.getById(key);
            double heji = huo.getPrice() * count;
            System.out.println(huo.getName() + "¥" + huo.getPrice() + "   数量:" + count + "    合计:" + heji);
            sum += heji;
        }
    }
}
enjoy大苏打
2013-08-09 · TA获得超过102个赞
知道答主
回答量:82
采纳率:0%
帮助的人:38.8万
展开全部
import java.util.*;
class  Shop
{
 public static void main(String[] args) 
 {
  int a,b,e,num=0;
  String c="y",d="y",Y="y";
  Scanner in=new Scanner(System.in);
  System.out.print("请选择购买的商品编号:1.T恤    2.网球鞋   3.网球拍!\n**********************************************\n");
  while (d.equals(Y))
  {
  
   while(c.equals(Y)){
   System.out.print("请输入购买商品编号:");
   a=in.nextInt();
   System.out.print("请输入购买商品数量:");
   b=in.nextInt();
   if(a==1){
    num+=245*b;
    }else if(a==2){
     num+=570*b;}
   else{
    num+=100*b;
   }
   System.out.print("是否继续(y/n):");
   c=in.next();
   }
   System.out.println("合计¥:"+num);
   System.out.print("是否继续(y/n):");
   d=in.next();
  }
  System.out.println("应付金额:"+num);
  System.out.println("顾客支付:");
  e=in.nextInt();
  System.out.println("找钱"+(e-num));
 }
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
偷偷地笑呗
2013-08-20 · TA获得超过163个赞
知道小有建树答主
回答量:124
采纳率:0%
帮助的人:86.8万
展开全部
我先问下,是否继续这个分支是用来循环输入购买商品跟数量的对吧?
那么比较简单的方法就是用一个变量来保存,在代码开头加入一句 float count=0;
去保存你的数值
需要在是否继续(y/n):y这句话前加入一个

count+=每次小结合计的数值

最后System.out.println("应付金额:"+count);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式