【Java】使用面向对象的概念表示出下面的生活场景:小明去超市买东西,所有买到的东西都放在购物车之中,最后到收银台一起结账。(开放题目,功能可自定义)

题目要求:使用面向对象的概念表示出下面的生活场景:小明去超市买东西,所有买到的东西都放在购物车之中,最后到收银台一起结账。(开放题目,功能可自定义)

实现效果视频:【JAVA】类与对象(实验)_哔哩哔哩_bilibili

思路构建:创建字符串数组存储所有商品名称及编号,然后再创建对应的价格浮点型数组,利用while(true)循环让小明输入想要加入购物车的商品编号,当输入-1时结束,最后通过计算机类算出购物车商品总价并输出。

商品类代码如下:

package trolley;
public class thing {
    public static String[] thg = {"1.番茄","2.火腿肠","3.伞","4.西瓜","5.豆腐"};
    public static double[] price = {2,1.5,15,20,1};
    public static int car = 0;
    public static double[][] detailcar = {{0,0},{0,0},{0,0},{0,0},{0,0}};
    public static int lenth1 = thg.length;
}

其中商品个数可以随需要更改,由于二维数组用起来太麻烦,所以这里采用了两个一维数组,上面thg商品一维数组对应着下方price一维数组的价格,在取用时可以同时取数组相同位置的元素。

接着将购物车内的初始商品数量设置为0,购物车二维数组给一个初始化的值,这里选的为0.二维数组的每行存放购物车商品的数量和单价。

购物车结算(计算器)类代码如下:

package trolley;
public class caculate {
    public static double sum=0;
    public static void endbuy() {
        int i;
        if(thing.car==0)
        {
            System.out.println("当前购物车没有物品。");
        }
        else {
            for (i = 0; i < thing.car; i++) {
            sum += thing.detailcar[i][0]*thing.detailcar[i][1];
            }
        }
    }
}

这里设置了一个endbuy()方法,决定了小明购买完成的信号,当使用此方法时,代表添加商品阶段结束,开始计算购物车内所有商品的价格。

并且在商品类中定义了购物车内商品的数量car,这时候就可以遍历此数量内的购物车数组,分别将每行的商品数量乘单价,再累加得到购物车商品总价sum。

最后测试类代码如下:

package trolley;
import java.util.Scanner;
public class road {
    public static void main(String[] args) {
        int i;
        System.out.println("商品如下:");
        for (i=0;i<thing.lenth1;i++)
        {
            System.out.println(thing.thg[i]);
            System.out.println("单价:"+thing.price[i]);
        }
        System.out.println("请输入需要加入购物车的商品编号:");
        System.out.println("(输入-1结束购物并结账)");
        Scanner want = new Scanner(System.in);
        int things = want.nextInt();
        while(true)
        {
            System.out.println("请输入购买的数量:");
            double num = want.nextDouble();
            thing.detailcar[thing.car][0] = num;
            thing.detailcar[thing.car][1] = thing.price[things-1];
            thing.car++;
            System.out.println("请输入需要加入购物车的商品编号:");
            things = want.nextInt();
            if(things==-1)
            {
                break;
            }
        }
        System.out.println("开始结算购物车商品价格");
        caculate.endbuy();
        System.out.println("结算完毕");
        System.out.println("商品总价为:"+caculate.sum);
    }
}

这里测试类先遍历thg商品,将所有商品的名称和单价打印出来,如果不想设置length1这个量,也可以调用thg.lenth来得到thg数组的长度。

接着用while(true)设置一个死循环,不断地向购物车内添加商品,直到输入-1代表购物结束,然后调用caculate.endbuy()来计算商品总价,最后输出商品总价。

运行结果:

 

可改进的部分:

如果会使用二维数组建议使用二维数组,这样可以将物品和单价和购物数量全对应在一起,方便代码的复用和可阅读性。

测试类中的while(true)循环向购物车添加商品,也可以改成Switch语句,比如1代表添加商品,2代表去掉商品,3代表结束购物这样。

可以额外添加一个购物车的物品名称数组,来存放加入购物车的商品名称,这样可以在结算时显示出购买了什么商品,数量是多少,单价是多少,总价是多少,类似于平常去超市买东西的小票。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

挽璃华

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值