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