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

本文介绍如何使用Java和ArrayList实现一个简单的控制台购物车程序。通过自定义商品类和方法类,演示了增删改查功能的实现过程。

#用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一个新对象用来存储新的信息。

转载于:https://my.oschina.net/finchxu/blog/3059743

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值