#用java实现简单的控制台程序,练习List集合的ArrayList使用方法,要求在list里存储的类型是自定义的对象。 这里简单写一个购物车的增删改查 首先是编写商品类啊,
package day0606;public class Goods { private String no; private String name; private double price; private int num; public String getNo() { return no; } public void setNo(String no) { this.no = no; } 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; } public int getNum() { return num; } public void setNum(int num) { this.num = num; } @Override public String toString() { return "Goods [no=" + no + ", name=" + name + ", price=" + price + ", num=" + num + "]"; }}
其次是写方法类,把增删改查的方法都放到这个类中,
package day0606;import java.util.ArrayList;import java.util.List;public class Car { Goods good = new Goods(); Listlist = new ArrayList<>(); //添加 public void addGoods(String no,String name,double price,int num) { Goods good = new Goods(); good.setNo(no); good.setName(name); good.setPrice(price); good.setNum(num); list.add(good); } //修改 价格和数量 public void updateGoods(String no,double price,int num) { for(int i = 0;i < list.size();i ++) { good = list.get(i); if(good.getNo().equals(no)) { good.setPrice(price); good.setNum(num); break; } } } //删除 需要编号 public void delGoods(String no) { for(int i = 0;i < list.size();i ++) { good = list.get(i); if(good.getNo().equals(no)) { list.remove(i); break; } } } //查询 遍历 public void getGoods() { for(Goods a:list) { System.out.println(a); } }}
最后编写含有主函数的测试类啊,把上边的方法类中的方法都实现一次,
package day0606;import java.util.Scanner;public class TestCar { public void menu() { System.out.println("***************菜单页面*******************"); System.out.println("1.添加2.修改价格和数量3.删除商品4.查询全部5.退出"); System.out.println("****************************************"); System.out.print("*请输入选择的操作:"); } public static void main(String[] args) { TestCar tc = new TestCar(); Car car = new Car(); Scanner sca = new Scanner(System.in); String inputNoName,no,name; double inputPrice,price; int inputNum,num; while(true) { tc.menu(); inputNum = sca.nextInt(); switch(inputNum) { case 1: //添加 System.out.print("*输入要插入的编号:"); no = sca.next(); System.out.print("*输入商品名称:"); name = sca.next(); System.out.print("*输入商品价格:"); price = sca.nextDouble(); System.out.print("*输入商品数量:"); num = sca.nextInt(); car.addGoods(no,name,price,num); System.out.println("成功添加商品"); break; case 2: //修改 System.out.println("*输入要修改的编号:"); no = sca.next(); System.out.print("*商品价格修改为:"); price = sca.nextDouble(); System.out.print("*商品数量修改为:"); num = sca.nextInt(); car.updateGoods(no,price,num); break; case 3: //删除 System.out.print("*输入要删除的商品编号:"); no = sca.next(); car.delGoods(no); System.out.println("成功删除!"); break; case 4: //查询全部商品 car.getGoods(); break; case 5: //退出 System.out.println("退出系统"); System.exit(0); } } }}
完成!! ps: 如果你在执行添加操作的时候发现啊,之前添加的东西都被最后一次添加的东西覆盖了,怎么办啊? 你想啊,list里每次存的都是一个商品的对象的引用名(代表对象的地址),你每次的地址都一样当然就都覆盖了,所以要做到每次添加都new一个新对象用来存储新的信息。