求高手用java代码帮我做一下这道题,谢谢。如果可以的话,请讲一下格式化输出。



答:

/***********************批发类******************************/
 import java.text.NumberFormat;
  import java.util.Map;
  import java.util.Scanner;
  import java.util.Set;
  import java.util.TreeMap;
  
  public class Wholesale {
  //数字格式化器
  private static NumberFormat format = NumberFormat.getInstance();
  //库存对象.
  private static Map<Integer,Goods> warehouse = new TreeMap<Integer, Goods> ();
  /**
   * 构造批发对象.
   */
  Wholesale(){
  //初始化库存信息.
  warehouse.put(1, new Goods(1,"电风扇", 124.23));
  warehouse.put(2, new Goods(2,"洗衣机", 4500.0));
  warehouse.put(3, new Goods(3,"电视机", 8800.9));
  warehouse.put(4, new Goods(4,"冰箱", 5000.88));
  warehouse.put(5, new Goods(5,"空调机", 4456.0));
  //设置数字格式化器,最小保留一位小数.
  format.setMinimumFractionDigits(1);
  }
  /**
   * 运行批发系统.
   */
  public void run(){
  //打开控制台
  Scanner conin = new Scanner(System.in);
  //登录系统
  if(login(conin)){
  System.out.println("登录成功!");
  //打印使用信息
  show();
  //进行一次交易
  change(conin);
  }else{
  System.out.println("登录失败系统退出.");
  }
  }
  /**
   * 进行一次交易.
   */
  private void change(Scanner conin) {
  System.out.print("请输入您批发的商品编号: ");
  //商品编号
  Integer code = null;
  //批发数量
  Integer amount = null;
  //循环收集用户输入的商品编号与批发数量.
  while(conin.hasNext()){
  if(null == code){
  //收集商品编号
  code = conin.nextInt();
  //验收商品编号的有效性
  Goods g = warehouse.get(code);
  if(null == g){
  System.out.print("您输入的商品编号不存在,请重新输入: ");
  code = null;
  continue;
  }else{
  //商品编号验证有效后,提示输入批发数量.
  System.out.print("请输入批发数量: ");
  continue;
  }
  }else if(null == amount){
  //收集批发数量
  amount = conin.nextInt();
  break;
  }else{
  //收集商品编号与批发数量成功完成.
  break;
  }
  }
  Double total = warehouse.get(code).getPrice() * amount;
  System.out.println("您需要付款: "+format.format(total));
  //交易结束,关闭系统.
  conin.close();
  
  }
  /**
   * 用户登录方法.
   * @return 如果登录成功返回true,如果登录失败返回false.
   */
  private boolean login(Scanner conin){
  System.out.print("请输入用户名: ");
  //表示是否登录成功
  Boolean logined = false; 
  //循环等待输入.
  while(conin.hasNext()){
  String name = conin.next();
  if("TOM".equals(name)){
  System.out.print("请输入密码: ");
  String password = conin.next();
  if("123".equals(password)){
  logined = true;
  break;
  }else{
  System.out.print("密码错误!");
  break;
  }
  }else{
  System.out.print("用户名错误!");
  break;
  }
  }
  return logined;
  }
  /**
   * 打印本系统的使用信息.
   */
  private void show(){
  
  StringBuffer sb = new StringBuffer();
  sb.append("*********欢迎进入商品批发城*********\n");
  sb.append("\t编号\t商品\t价格\n");
  Set<Integer> keys = warehouse.keySet();
  for(Integer code : keys){
  Goods g = warehouse.get(code);
  
  
  sb.append("\t"+g.getCode()+"\t"+g.getName()+"\t"+format.format(g.getPrice())+"\n");
  }
  sb.append("**********************************\n");
  System.out.println(sb.toString());
  }
  
  
  public static void main(String[] args) {
  Wholesale w = new Wholesale();
  w.run();
  
  }
  }
  /***********************商品类******************************/
 /**
   * 商品类
   */
  public class Goods {
  /**商品编码*/
  private Integer code;
  /**商品名称*/
  private String name;
  /**商品单价*/
  private Double price;
  /**
   * 以商品编码,名称,单价,构建一个商品对象.
   * @param code 商品编码
   * @param name 商品名称
   * @param price 商品单价
   */
  public Goods(Integer code, String name, Double price) {
  super();
  this.code = code;
  this.name = name;
  this.price = price;
  }
  
  public Integer getCode() {
  return code;
  }
  public void setCode(Integer code) {
  this.code = code;
  }
  public String getName() {
  return name;
  }
  public void setName(String name) {
  this.name = name;
  }
  public Double getPrice() {
  return price;
  }
  public void setPrice(Double price) {
  this.price = price;
  }
  }
  
 我的运行结果如图:














  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值