本人初学java,老师出了这么道题怎么做????

qq359392724 2012-12-05 02:38:26
完成一个自购贩售机模型

贩售机中可以容纳一定数量(1 贩售机可以接受用户投入钱
贩售机可以让用户投入钱并且选择所需要购买的商品,选择之后比较投入钱币金额和商品单价.如果满足则吐出商品(不用找零)
用户可以查看贩售机中各种商品的数量

贩售机可以提供一个添加商品的入口
说是要用面向对象
...全文
373 8 打赏 收藏 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Fuuqiu 2012-12-11
  • 打赏
  • 举报
回复
哈哈 大家技术不赖啊 我初学 刚学到函数 还没有到对象 抱歉 帮不了LZ了
zly361814478 2012-12-10
  • 打赏
  • 举报
回复
package practice;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map.Entry;
import java.util.Set;

public class ShopTest {
      
	private static HashMap<Goods,Integer> map = new HashMap<Goods,Integer>();
	
	//添加商品。
	public void addGoods(Goods good){
		boolean flag =false;
		//如果存在该商品,数量+1;
		 Set<Entry<Goods,Integer>> set=map.entrySet();
		 for(Iterator<Entry<Goods,Integer>> ite = set.iterator();ite.hasNext();){
			   Entry<Goods,Integer> entry = ite.next();
			   Goods good1 = entry.getKey(); //商品对象
			 //贩售机存在商品
			   if(good1.getName().equals(good.getName())){
				   int number = entry.getValue();//指定商品数量
				   number+=1;
				   map.put(good1,number);
				   flag = true;
			   }
			      
		   }
		 //贩售机不存在商品
		if(!flag){
			map.put(good,1);
		}
	}	
	//查看商品详细信息。
	public void showGoods(){
	 Set<Entry<Goods,Integer>> set=map.entrySet();
	 for(Iterator<Entry<Goods,Integer>> ite = set.iterator();ite.hasNext();){
		   Entry<Goods,Integer> entry = ite.next();
		   Goods good = entry.getKey(); //商品对象
		   int number = entry.getValue();//指定商品数量
		   System.out.println("商品名称:"+good.getName()+"  商品价格:"+good.getPrice()+"   数量:"+number);	   
	   }
	}
	//能否购买商品。
   public boolean canBuy(String name,int coin){
	   
	   Set<Entry<Goods,Integer>> set=map.entrySet();
		 for(Iterator<Entry<Goods,Integer>> ite = set.iterator();ite.hasNext();){
			   Entry<Goods,Integer> entry = ite.next();
			   Goods good = entry.getKey(); //商品对象
			   int number = entry.getValue();//指定商品数量
			   if(good.getName().equals(name)){
				   if(coin>=good.getPrice()){
					   number-=1;
					 //如果商品卖完了,直接删除这个商品。
						  if(0==number){
							  map.remove(good);
						  }
						  //否则更新商品数量-1
						  else{
							  map.put(good,number);
						  }
						  
						  System.out.println("购买成功");
						  return true;
				   }
				   else{
						  System.out.println("对不起,您金额不够!");
						  return false;
					  }
			   }
		 }
		 System.out.println("购买失败");
		 return false;
   }
   public static void main(String[] args) {
	  //测试数据
	  ShopTest test = new ShopTest();
	  Goods baishi = new Goods("百事可乐",3.5f);
	  Goods xuebi  = new Goods ("雪碧",3);
	  test.addGoods(baishi);
	  test.addGoods(xuebi);
	  test.showGoods();
	  System.out.println("--------");
	  Goods xuebi2 = new Goods("雪碧",3);
	  test.addGoods(xuebi2);
	  test.showGoods();
	  test.canBuy("雪碧",3);
	  System.out.println("----------");
	  test.showGoods();
  }
	
}
//商品类。
 class Goods{
	private String name;  //商品名.
	private float price;  //价格.
	public Goods(){
		
	}
	public Goods(String name,float price){
		this.name=name;
		this.price=price;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public float getPrice() {
		return price;
	}
	public void setPrice(float price) {
		this.price = price;
	}
	
}
可以优化下的。。。。。
coooliang 2012-12-06
  • 打赏
  • 举报
回复
贩售机一个对象,商品一个对象。
hu_xinxin 2012-12-06
  • 打赏
  • 举报
回复
public class 贩售机{ Things[] things = new Things[]; public static void 添加商品(){ } public static show(){ } public static buy(int price){ } } class Things{ int price; int count; }
cw110106 2012-12-06
  • 打赏
  • 举报
回复
我也是初学者 这是我做的 希望对楼主有用!
cw110106 2012-12-06
  • 打赏
  • 举报
回复

public class Commodity {
	private String type;
	private double price;
	public String getType() {
		return type;
	}
	public void setType(String type) {
		this.type = type;
	}
	public double getPrice() {
		return price;
	}
	public void setPrice(double price) {
		this.price = price;
	}
	
	public String toString() {
		return "商品名称:" + this.type + ",商品价格:" + this.price + "元";
	}
}
cw110106 2012-12-06
  • 打赏
  • 举报
回复

import java.util.ArrayList;
import java.util.Scanner;

public class Shop {
	Scanner scan = new Scanner(System.in);
	ArrayList<Commodity> al = new ArrayList<Commodity>();
	
	public Commodity addCom() {
		System.out.println("请输入添加商品的种类,价格:");
		Commodity c = new Commodity();
		c.setType(scan.next());
		c.setPrice(scan.nextDouble());
		al.add(c);
		return c;
	}
	
	public void findAll() {
		for(int i = 0; i < al.size(); i ++) {
			int count = 0;
			for(int j = 0; j < al.size(); j ++) {
				if(al.get(i).getType().equals(al.get(j).getType()) && al.get(i).getPrice() == al.get(j).getPrice()) {
					count ++;
				}
			}
			System.out.println(al.get(i) + "," + "总量为:" + count);
		}
	}
	
	
	public void shopping(double money, Commodity c) {
		if(money >= c.getPrice()) {
			System.out.println("交易成功!");
			al.remove(c);
		} else {
			System.out.println("交易失败,您的金额不足!");
		} 
	}
	
	public static void main(String[] args) {
		Shop s = new Shop();
		String type;
		double money;
		
		while(true) {
			System.out.println("1 --- 添加商品");
			System.out.println("2 --- 显示库存");
			System.out.println("3 --- 购买商品");
			System.out.println("请选择输入:");
			
			char choose = s.scan.next().charAt(0);
			
			switch(choose) {
			case '1' :
				s.addCom();
				System.out.println("添加成功!");
				break;
			case '2' :
				s.findAll();
				break;
			case '3' :
				boolean succeed = false;
				System.out.println("请输入 所需商品名称:");
				type = s.scan.next();
				for(int i = 0; i < s.al.size(); i ++) {
					if(s.al.get(i).getType().equals(type)) {
						System.out.println(s.al.get(i));
						
						System.out.println("请投币:");
						money = s.scan.nextDouble();
						s.shopping(money, s.al.get(i));
						succeed = true;
						break;
					} 
				}
				
				if(!succeed) {
					System.out.println("查无此货");
				}
				
				break;
				default :
					System.out.println("您的输入有误,请重新输入!");
			}
		}
		
	}
}
a491392040 2012-12-06
  • 打赏
  • 举报
回复
/*下面是我的思路,你可以看下: 贩售机可以看成对象 所以我们创建一个贩售机的类 */ Class 贩售机 { //然后我们再来实现你老师的需求,首先是添加商品,也就是写方法吧 public static void 添加商品() //接下来你老是需要些什么功能全部用方法写在下面就可以了 } 大概就是这个样子,具体的代码和这其中设计到的变量这些这些就得你自己想和写了。希望对你有帮助哈

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧