Java基础8

一个对象可以同时被多个指针指向
一个指针可以指向不同的对象, 但是同一时刻只能指向1个

1. 指针是可以传递的
   从栈中传递到堆区
           例如: 领养宠物成功后, 将宠物对象的指针传递到宠物数组中进行存储
                 随机生成怪物对象后, 将怪物对象的指针传递到怪物数组中进行存储
   从栈中传递到另一个栈中
           例如: 宠物杀死怪物成功后, 调用宠物的killOk方法, 并把怪物的指针传递
           到killOk方法中, 这样可以在killOk方法中通过怪物的指针获取到被杀死的怪物对象中的信息 
 

2. 禁止直接操作对象中的属性, 用成员方法封装操作对象属性的过程
   对象中的属性被private封装了
   所有操作都应该提供成员方法, 用指针去调用成员方法来操作
   例如: 当宠物攻击或被攻击, 怪物攻击或被攻击, 都应该提供对应的成员方法进行调用

 

package ordering;

import java.util.Scanner;

public class Demo1 {
    static Scanner sc=new Scanner(System.in);
    static Dish[] dish = new Dish[5];
    static long money=100;
    public static void main(String[] args) {
        int choise=0;
        do {
            System.out.println("1.菜品展示");
            System.out.println("2.菜品添加");
            System.out.println("3.菜品删除");
            System.out.println("4.菜单扩容");
            System.out.println("5.进入点餐");
            System.out.println("6.进入点赞");
            System.out.println("7.退出点餐");
            choise=sc.nextInt();
            switch (choise){
                case 1:
                    System.out.println("菜品展示");
                    display();
                    break;
                case 2:
                    System.out.println("菜品添加");
                    addDish();
                    break;
                case 3:
                    System.out.println("菜品删除");
                    deleteDish();
                    break;
                case 4:
                    System.out.println("菜单扩容");
                    dilataition();
                    break;
                case 5:
                    System.out.println("进入点餐");
                    saleDish();
                    break;
                case 6:
                    System.out.println("进入点赞");
                    likeDish();
                    break;
                case 7:
                    System.out.println("退出点餐");
                    break;
            }
        }while (choise!=7);
        System.out.println("退出点餐系统");
    }
    private static void display() {
        System.out.println("菜单展示");
        for (int i = 0; i < dish.length; i++) {
            System.out.println((i+1)+"号菜品");
              if (dish[i]==null){
                  System.out.println((i+1)+"号菜品售尽");
              }else {
                  dish[i].show();
              }
        }
    }
    private static void addDish() {
        for (int i = 0; i < dish.length; i++) {
            if (dish[i]==null) {
                System.out.println("进入菜品添加系统");
                display();
                Dish a = new Dish();
                System.out.println("菜品名字:");
                a.setName(sc.next());
                System.out.println("菜品价格:");
                a.setPrice(sc.nextDouble());
                System.out.println("菜品数量:");
                a.setStock(sc.nextInt());
                System.out.println("菜品售出数:0");
                a.setSaleNum(0);
                System.out.println("菜品点赞:0");
                a.setLikeNum(0);
                for (int j = 0; j < dish.length; j++) {
                    if (dish[j] == null) {
                        dish[j] = a;
                        System.out.println((i + 1) + "号菜栏添加成功");
                        break;
                    }
                }break;
            }
            else if (i == dish.length - 1) {
                System.out.println("菜栏已满,请扩容");
                return;
            }
        }
    }
    private static void deleteDish(){
        System.out.println("进入菜品删除系统");
        display();
        System.out.println("请输入要删除的菜品");
        int index =sc.nextInt()-1;
        if (dish[index]==null){
            System.out.println("该菜品不存在");
            return;
        }else if (dish[index].getStock()-dish[index].getSaleNum()!=0){

            System.out.println("还有库存无法删除");
        }else {
            for (int i = 0; i < dish.length; i++) {
                if ((dish[i].getStock() - dish[i].getSaleNum()) == 0) {
                    //dish[i]=null;
                    dish[i] = dish[i + 1];
                    System.out.println("菜品删除成功");
                    break;
                }
            }
        }




        dish[dish.length-1]=null;

    }
    private static void dilataition(){
        System.out.println("进入菜单扩容");
        Dish[] arr =new Dish[(3*dish.length)/2];
        for (int i = 0; i < dish.length; i++) {
            arr[i]=dish[i];
        }dish=arr;
        System.out.println("菜单扩容成功");
    }
    private static void saleDish() {
        System.out.println("进入点餐系统");
        display();
        System.out.println("请输入餐品号");
        int i = sc.nextInt()-1;
        if (dish[i] == null) {
            System.out.println("该菜品不存在,请重新选择");
        } else if (dish[i].getStock() == null) {
            System.out.println("该菜品库存不足,请重新选择");
        } else {
            System.out.println("请输入点餐份数");
            int n = sc.nextInt();
            if (n>dish[i].getStock()){
                System.out.println("库存余额不足");
            }else {
                dish[i].saleOut(n);
                System.out.println("需要支付金额" + n * dish[i].getPrice() + "元");
                if (money < n * dish[i].getPrice()) {
                    System.out.println("余额不足,支付失败");
                } else {
                    money -= n * dish[i].getPrice();
                    System.out.println("支付成功");
                    System.out.println("您的余额" + money);
                }
            }
        }
    }
    private static void likeDish(){
        System.out.println("进入点赞业务");
        display();

        System.out.println("请输入要点赞的菜品");
        int i=sc.nextInt()-1;
        if (dish[i]==null){
            System.out.println("该菜品不存在,请重新选择");
        }else
        dish[i].like();
        System.out.println("点赞成功");
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值