小Demo,自定义类水果,要求包含水果名称、单价、产地等属性

创建自定义类水果,要求包含水果名称、单价、产地等属性

创建自定义类水果,要求包含水果名称、单价、产地等属性
使用HashSet存储水果,并提供equals方法和hashCode方法使用水果的名称属性判定水果是否相同,使用迭代器输出

首先我们创建一个标准的水果类

JavaBean水果类

package com.hzyc.lesson1205;

public class Fruit {
    private String Name;
    private int price;
    private String Address;
	//写一下Fruit的有参构造方法
    Fruit(String Name, int price, String Address) {
        this.Name = Name;
        this.price = price;
        this.Address = Address;
    }
	//重写hashCode方法,便于初步比较对象
    @Override
    public int hashCode() {
        return this.price;
    }
	//这是比对的最后一道关卡
    @Override
    public boolean equals(Object o) {
        if (o == this) {
            return true;
        }
        if (o.getClass() == this.getClass()) {
            Fruit f = (Fruit) o;      //让对象o转换成为Fruit类型的东西,才能进行下一步的比较
            return f.Name.equals(this.Name);
        }
        return false;
    }
	//重写toString方法,便于对象的字符串化
    @Override
    public String toString() {
        return "Fruit{" +
                "Name='" + Name + '\'' +
                ", price=" + price +
                ", Address='" + Address + '\'' +
                '}';
    }
	//标准类的get/set方法
    public String getName() {
        return Name;
    }

    public void setName(String name) {
        Name = name;
    }

    public int getPrice() {
        return price;
    }

    public void setPrice(int price) {
        this.price = price;
    }

    public String getAddress() {
        return Address;
    }

    public void setAddress(String address) {
        Address = address;
    }

}

编写对水果的管理类

根据题目要求,我们需要一个类来管理这些水果们,所以我们要编写水果管理类:class FruitManager。
①首先我们需要写上HashSet集合来管理fruit类,采用static对它进行修饰,让他成为一个共享的集合;
②之后再编写添加水果的方法addFruit();增删改查都是一般的管理手段,在这里我们只写了增加的办法,还没有对其他的办法进行补充;
③既然我们对它进行管理,那么我们也必须要有将这个集合输出的方法,毕竟程序就是要展示出来给人看的,别人才知道集合里面有什么,我们需要将它写出来,不然人们总是好奇,你这个集合里面写的到底是什么东西。对于集合,我们采用的是iterator方法输出。
④我们在addFruit里面还写了try/catch方法,主要是为了防止手抖输入错误,从而导致一下子程序输入异常程序跳出。

package com.hzyc.lesson1205;

import java.util.HashSet;
import java.util.Iterator;
import java.util.Scanner;

public class FruitManager {
  	//在这里写上HashSet集合来管理fruit类,我们采用static对它进行修饰
    static HashSet<Fruit> fruitList = new HashSet<Fruit>();

    void addFruit() {
        System.out.println("请按指定的格式添加水果:【水果名-单价-产地】");
        Scanner sc = new Scanner(System.in);
        boolean continueOrNot = true;
        while (continueOrNot) {
            try {
                String str = sc.next();
                String[] strArr = str.split("-");
                Fruit f = new Fruit(strArr[0], Integer.parseInt(strArr[1]), strArr[2]);
                fruitList.add(f);
                continueOrNot = false;
            } catch (ArrayIndexOutOfBoundsException e) {
                System.out.println("请按照格式重新输入。");
            }
        }
    }

    void print() {
        Iterator<Fruit> iter = fruitList.iterator();
        while (iter.hasNext()) {
            System.out.println(iter.next());
        }
    }

}

工作流

主要是为了迭代,更新够快
在这里我们也写了try/catch方法,还是为了防止手抖输入错误,从而导致一下子程序输入异常程序跳出。用户白白添加输入半天对象,结果程序崩了,那用户不得挺崩溃的嘛-_-|||

package com.hzyc.lesson1205;

import java.util.InputMismatchException;
import java.util.Scanner;

public class WorkFlow {
    void star() {
        FruitManager mgr = new FruitManager();
        folwOut:
        while (true) {
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入你需要什么?\n" +
                    "1.查看当前水果\n" +
                    "2.添加水果\n" +
                    "3.退出请输入Q\n");
            try {
                int choice = sc.nextInt();
                switch (choice) {
                    case 1:
                        System.out.println("当前水果共有:");
                        mgr.print();
                        break;
                    case 2:
                        mgr.addFruit();
                        break;
                    case 3:
                        System.out.println("正在退出……");
                        break folwOut;
                }
            } catch (InputMismatchException e) {
                System.out.println("输入有误,请选择对应的选项。");
            }

        }
    }
}

最后是测试类

public class test {
    public static void main(String[] args) {
        WorkFlow fruit = new  WorkFlow();
        fruit.star();
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

willorn

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

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

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

打赏作者

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

抵扣说明:

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

余额充值