Zoo Manage (2 class)


Submit solution

Points: 70 (partial)
Time limit: 1.0s
Memory limit: 256M

Authors:
Problem types
Allowed languages
Java 19, Java 8

題目說明

請設計ZooAnimal類別,其中包含以下內容:

【Animal】

〔參數〕
name:字串,動物名稱
amount:整數,動物數量

〔建構子〕
Animal(String n, int a):傳入兩個值(動物名稱、數量),設定物件的參數

〔方法〕
getName():回傳name
toString():回傳"Animal name: (動物名稱), amounts: (數量)"

【Zoo】

〔參數〕
animals:ArrayList<Animal>,動物園裡的動物清單

〔建構子〕
Zoo():創建(new)動物清單,使用 addSomeAnimals() 新增動物資料

〔方法〕
add():傳入Animal資料,新增一筆資料到動物清單
addSomeAnimals():新增以下資料
    ⌜                                       ⌝
        .add(new Animal("Lion", 3));
        .add(new Animal("Tiger", 3));
        .add(new Animal("Zebra", 6));
        .add(new Animal("Giraffe", 5));
        .add(new Animal("Elephant", 4));
        .add(new Animal("BrownBear", 2));
        .add(new Animal("GiantPanda", 2));
        .add(new Animal("Chimpanzee", 6));
    ⌞                                       ⌟
toString():回傳動物清單的每筆資料
searchForAnimal():傳入要查詢的字母(大小寫不同),將符合條件的資料加到result(ArrayList<Animal>)清單,回傳result

【主程式】須執行以下步驟:

建立Zoo物件
新增以下資料到Zoo物件
    ⌜                                       ⌝
        .add(new Animal("RedPanda", 4));
        .add(new Animal("Capybara", 6));
        .add(new Animal("Otter", 6));
    ⌞                                       ⌟
接鍵盤輸入資料(要查詢的字母),印出"Search for animals with letter "(要查詢的字母)":"
新增result(ArrayList<Animal>)參數,接 searchForAnimal() 回傳的資料
若(result.size()==0),印出"None.";否則,用for-each迴圈印出result的每筆資料

輸入

要查詢的字母

輸出

(result.size()==0),印出None.
否則,用for-each迴圈印出result的每筆資料

測試資料0 輸入

b

測試資料0 輸出

Search for animals with letter "b":
Animal name: Zebra, amounts: 6
Animal name: Capybara, amounts: 6

// 大小寫不同,因此BrownBear不符合條件"b"

測試資料1 輸入

K

測試資料1 輸出

Search for animals with letter "K":
None.

Comments


  • 0
    scu09156146  commented on May 14, 2024, 12:49 p.m.

    題解

    // 參考課堂範例A267

    import java.util.ArrayList;
    import java.util.Scanner;
    
    class Animal {
        private String name; // 動物名稱
        private int amount; // 數量
    
        public Animal(String name, int amount) {
            this.name = name;
            this.amount = amount;
        }
    
        public String getName() {
            return name;
        }
    
        public String toString() {
            return "Animal name: " + name + ", amounts: " + amount;
        }
    }
    
    class Zoo {
        private ArrayList<Animal> animals; // list of animals in the zoo
    
        public Zoo() {
            // constructor, initialize the zoo with some animals
            animals = new ArrayList<Animal>();
            addSomeAnimals();
        }
    
        public void add(Animal name_amount) {
            // add a animal to the zoo
            animals.add(name_amount);
        }
    
        public void addSomeAnimals() {
            // add some animals to the zoo
            animals.add(new Animal("Lion", 3));
            animals.add(new Animal("Tiger", 3));
            animals.add(new Animal("Zebra", 6));
            animals.add(new Animal("Giraffe", 5));
            animals.add(new Animal("Elephant", 4));
            animals.add(new Animal("BrownBear", 2));
            animals.add(new Animal("GiantPanda", 2));
            animals.add(new Animal("Chimpanzee", 6));
        }
    
        public String toString() {
            String result = "";
            for (Animal animal : animals) {
                result += animal.toString() + "\n";
            }
            return result;
        }
    
        public ArrayList<Animal> searchForAnimal(String letter) {
            ArrayList<Animal> result = new ArrayList<Animal>(); // 記錄符合條件的動物清單
    
            for (Animal animal : animals) {
                if (animal.getName().contains(letter)) {
                    result.add(animal);
                }
            }
    
            return result;
        }
    }
    
    public class ZooManage2 {
        public static void main(String[] args) {
            Zoo zoo = new Zoo();
    
            // add a new animal to the zoo
            zoo.add(new Animal("RedPanda", 4));
            zoo.add(new Animal("Capybara", 6));
            zoo.add(new Animal("Otter", 6));
    
            Scanner input = new Scanner(System.in);
            String searchLetter = input.next();
            input.close();
    
            // search for animals with certain letter and print the result
            System.out.println("Search for animals with letter \"" + searchLetter + "\":");
            ArrayList<Animal> result = zoo.searchForAnimal(searchLetter);
    
            // 印出查詢結果
            if (result.size() == 0) {
                // 清單大小==0,表示沒有一筆資料符合條件
                System.out.println("None.");
            } else {
                for (Animal animal : result) {
                    System.out.println(animal); // 等同於印出animal.toString()
                }
            }
        }
    }