就是不信我做不出来,哈哈哈~凌晨三点,终于做出来了,爽!!
1、增删查改;
2、HashMap;
3、比较和排序;
4、怎样保证已经遍历完还是没有某个数据,用计数器一个一个数;
package A_January;
import java.util.*;
/**
2.创建购物车实体类,模拟购物车功能
使用HashMap,键是Goods类,包含属性id,name,price,值是数量.Goods默认id相同就表示是同一个商品
需求:(1,2,3各2分,4为附加5分)
1)添加商品到购物车(输入商品的信息和数量)
2)删除商品(删除购物车中的指定购物项,根据id)
3)修改商品(先输入id,查看是否有,如果有告知剩余数量,询问需要删除多少个,修改商品的数量)
4)显示所购买的商品信息(按购买单个商品的总价进行升序显示)(附加)
*/
public class ShoppingTest1 {
Scanner input=new Scanner(System.in);
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
Map<Goods, Integer> map = new HashMap<>();
while(true) {
System.out.println("请选择您要进行的操作:");
System.out.println("1.添加商品");
System.out.println("2.删除商品");
System.out.println("3.修改商品");
System.out.println("4.查看商品");
System.out.println("5.退出系统");
int choose = input.nextInt();
switch (choose) {
case 1://添加;
int id1;
String name;
int price;
System.out.println("请输入货物的id");
id1=input.nextInt();
for (Goods g:map.keySet()){
int i=0;
if(g.getId()==id1){
System.out.println("您输入的id已经存在,程序结束!");
return;
}
}
System.out.println("请输入货物的名字");
name=input.next();
System.out.println("请输入货物的价格");
price=input.nextInt();
System.out.println("请输入货物的数量");
int num=input.nextInt();
map.put(new Goods(id1,name,price),num);
break;
case 2://删除;
System.out.println("请输入货物id");
int id2=input.nextInt();
int i2=0;
for(Goods g:map.keySet()){//???
if(id2==g.getId()){
map.remove(g);
System.out.println("删除成功!");
break;
}
if(i2==map.size()-1){//好东西,要记住~~~
System.out.println("未找到相应货物!");
break;
}
i2++;
}
break;
case 3://修改;
System.out.println("请输入您想修改的货物id");
int id3=input.nextInt();
// Set<Map.Entry<Goods,Integer>> entry=map.entrySet();
Map map3 = new HashMap();
Iterator iter = map3.entrySet().iterator();
int i3=0;//计数器初始化;
for (Goods g3:map.keySet()) {
if (g3.getId() == id3) {//if只能一次把每一项拿出来比较,而不是全面比较;
System.out.println("请输入您想增加多少(若想减少请输入负数)");
int num3 = input.nextInt();
if (num3 + map.get(g3)> 0) {
map.put(g3, map.get(g3) + num3);
System.out.println("修改成功!");
} else if (num3 + map.get(g3) == 0) {
map.remove(g3);
System.out.println("修改成功");
} else {
System.out.println("删除失败,删除数量大于原来数量,请重新操作");
}
break;
}
if (i3 == (map.size() - 1)) {//好东西+1;
System.out.println("购物车中无此货物;");
break;
}
i3++;//计数器计数;共多少次循环,先执行再循环;
}
break;
case 4://查看;
Map<Goods,Integer> map5=new TreeMap<>(new Comparator<Goods>(){
@Override
public int compare(Goods o1, Goods o2) {
return o1.getPrice()*map.get(o1)-o2.getPrice()*map.get(o2);
}
});
for(Goods i:map.keySet()){
map5.put(i,map.get(i));
}
for(Goods i:map5.keySet()){
System.out.println(i+":"+map5.get(i));
}
System.out.println("*************************");
break;
case 5:
System.out.println("退出系统成功!");
System.exit(0);
break;
}
}
}
//*****************************************************
}