2020年12月5日作业自定义类水果,要求包含水果名称、单价、产地等属性

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

创建自定义类水果,要求包含水果名称、单价、产地等属性
使用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();
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_43801418/article/details/110728778