题目:
小明去超市买东西,所有买到的东西都放在了购物车之中,最后到收银台一起结账,编程实现此过程,要求:
(1)声明一个商品的接口Goods,里面包含两个抽象方法getName()和getPrice(),用于获得商品的名称和价格。
(2)定义具体商品类Book,Drink类都实现接口Goods。
(3)再定义一个购物车类ShopCar,用于放置商品,具体放置多少件商品由外部决定。ShopCar类中还包含有增加商品的方法,删除商品的方法,以及结账(算出购物车所有商品总价格)的方法。
已有的接口定义如下:
interface Goods{
public String getName();
public double getPrice();
}
需要编写子类Book和Drink:
子类里面包含两个属性:名称name和价格price;一个两参构造方法;实现接口Goods的两个抽象方法getName()和getPrice()。
需要编写购物车类ShopCar:
(1)包含一个属性:Goods对象数组;一个一参构造方法,参数是决定购物车能放置商品的数量。
(2)包含一个add方法,用于实现添加商品。
(3)包含一个remove方法,用于删除第几个商品。
(4)包含一个check方法,用于结账,计算购物车中所有商品的总价格。
已有的Main类定义:
/* 请在这里填写答案 */
public class Main {
public static void main(String[] args) {
int n;
Scanner scan=new Scanner(System.in);
n=scan.nextInt();
ShopCar sc=new ShopCar(n);
sc.add(new Book("Java程序设计",78.5));
sc.add(new Book("图像处理",44.5));
sc.add(new Book("高等数学",34.8));
sc.add(new Drink("绿茶",2.5));
sc.add(new Drink("雪碧",3.5));
sc.add(new Drink("可乐",5.5));
sc.remove(3);
for(int i=0;i<sc.getGoods().length;i++){
if(sc.getGoods()[i]!=null)
System.out.println("商品名称:"+sc.getGoods()[i].getName()+",价格:"+sc.getGoods()[i].getPrice());
}
System.out.println("结账:"+sc.check());
}
}
根据题目要求,代码实现如下:
class ShopCar {
Goods[] goods;
int foot = 0;
public ShopCar(int n) {
goods = new Goods[n];
}
public void add(Goods goods) {
if(this.foot<this.goods.length) {
this.goods[foot] = goods;
foot++;
System.out.println("添加成功!");
}
else {
System.out.println("添加失败!");
return ;
}
}
public void remove(int n) {
if(n < this.goods.length && n >= 0) {
for (int i = n; i < goods.length - 1 ; i++) {
goods[i] = goods[i+1];
}
this.goods[goods.length-1] = null;
}
}
public double check() {
double sum = 0.0;
for (int i = 0; i < goods.length; i++) {
if(goods[i] != null) {
sum+=goods[i].getPrice();
}
}
return sum;
}
public Goods[] getGoods() {
return this.goods;
}
}
class Book implements Goods {
String name;
double price;
public Book( String name, double price) {
this.name = name;
this.price = price;
}
@Override
public String getName() {
return name;
}
@Override
public double getPrice() {
return price;
}
}
class Drink implements Goods {
String name;
double price;
public Drink(String name, double price) {
this.name = name;
this.price = price;
}
@Override
public String getName() {
return name;
}
@Override
public double getPrice() {
return price;
}
}
以上就是 PTA-6-49 超市购物 的全部内容了,希望能对你有所帮助!