Java 杂谈JavaJava学习笔记

JavaSe实现List存对象类型并增删改查

2019-06-08  本文已影响1人  虚拟世界的懒猫

用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();
    List<Goods> list = 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一个新对象用来存储新的信息。

上一篇 下一篇

猜你喜欢

热点阅读