写一个类Army,代表一支军队,这个类有一个属性Weapon数组w(用来存储该军队所拥有的所有武器), 该类还提供一个构造方法,在构造方法里通过传一个int类型的参数来限定该类所能拥有
生活随笔
收集整理的這篇文章主要介紹了
写一个类Army,代表一支军队,这个类有一个属性Weapon数组w(用来存储该军队所拥有的所有武器), 该类还提供一个构造方法,在构造方法里通过传一个int类型的参数来限定该类所能拥有
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
代碼
/*開放型題目,隨意發揮:寫一個類Army,代表一支軍隊,這個類有一個屬性Weapon數組w(用來存儲該軍隊所擁有的所有武器),該類還提供一個構造方法,在構造方法里通過傳一個int類型的參數來限定該類所能擁有的最大武器數量,并用這一大小來初始化數組w。該類還提供一個方法addWeapon(Weapon wa),表示把參數wa所代表的武器加入到數組w中。在這個類中還定義兩個方法attackAll()讓w數組中的所有武器攻擊;以及moveAll()讓w數組中的所有可移動的武器移動。寫一個主方法去測試以上程序。提示:Weapon是一個父類。應該有很多子武器。這些子武器應該有一些是可移動的,有一些是可攻擊的。*/ public class Homework1 {public static void main(String[] args) {Army army = new Army(10);try {army.addWeapon(new Cannon());army.addWeapon(new Handgun());army.addWeapon(new HospitalShip());army.addWeapon(new HospitalShip());army.addWeapon(new HospitalShip());army.addWeapon(new HospitalShip());army.addWeapon(new HospitalShip());army.addWeapon(new HospitalShip());army.addWeapon(new HospitalShip());army.addWeapon(new HospitalShip());army.addWeapon(new HospitalShip());} catch (WeaponException e) {e.printStackTrace();}army.attackAll();army.moveAll();} } /* 寫一個類Army,代表一支軍隊,這個類有一個屬性Weapon數組w(用來存儲該軍隊所擁有的所有武器),該類還提供一個構造方法,在構造方法里通過傳一個int類型的參數來限定該類所能擁有的最大武器數量,并用這一大小來初始化數組w。該類還提供一個方法addWeapon(Weapon wa),表示把參數wa所代表的武器加入到數組w中。在這個類中還定義兩個方法attackAll()讓w數組中的所有武器攻擊;以及moveAll()讓w數組中的所有可移動的武器移動。 */ public class Army {private Weapon[] w;private int weaponsMaxNumber;//constructorpublic Army() {//默認武器數量為5this(5);}/**** @param weaponsMaxNumber 擁有最大武器的數量*/public Army(int weaponsMaxNumber) {this.weaponsMaxNumber = weaponsMaxNumber;this.w = new Weapon[weaponsMaxNumber];}/*** 往武器庫中加入一個武器* @param weapon 武器*/public void addWeapon(Weapon weapon) throws WeaponException {//判斷武器庫是否已滿if (findIndex() == w.length-1){throw new WeaponException("武器庫已滿,無法增加武器!");}w[findIndex()] = weapon;System.out.println("增加武器:" + weapon + "成功!");}/*** 找到為數組元素為空的最小數組下標* @return 武器庫中可以存放武器的位置*/public int findIndex(){int index = -1;for (int i = 0; i < w.length; i++) {if (w[i] == null){index = i;break;}}return index;}/*** 讓所有能夠進攻的武器進攻*/public void attackAll(){for (int i = 0; i < findIndex(); i++) {w[i].attack();}}/*** 讓所有能夠移動的武器移動*/public void moveAll(){for (int i = 0; i < findIndex(); i++) {w[i].move();}} } public class Weapon implements Movable, Attacking{@Overridepublic void attack() {System.out.println("武器在攻擊!");}@Overridepublic void move() {System.out.println("武器在移動!");} } public interface Movable {void move(); } public interface Attacking {void attack(); } public class Handgun extends Weapon{@Overridepublic void attack() {System.out.println("手槍在攻擊!");}@Overridepublic String toString() {return "手槍";}@Overridepublic void move() {System.out.println("手槍在移動!");} } public class Cannon extends Weapon{@Overridepublic void attack() {System.out.println("迫擊炮在攻擊!");}@Overridepublic void move() {System.out.println("迫擊炮在移動!");}@Overridepublic String toString() {return "迫擊炮";} } public class HospitalShip extends Weapon{@Overridepublic void attack() {System.out.println("醫院船在攻擊!");}@Overridepublic void move() {System.out.println("醫院船在移動!");}@Overridepublic String toString() {return "醫院船";} } public class WeaponException extends Exception {public WeaponException(){}public WeaponException(String message){super(message);} }總結
以上是生活随笔為你收集整理的写一个类Army,代表一支军队,这个类有一个属性Weapon数组w(用来存储该军队所拥有的所有武器), 该类还提供一个构造方法,在构造方法里通过传一个int类型的参数来限定该类所能拥有的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ZZULIOJ 1052:数列求和4
- 下一篇: ZZULIOJ 1107: 回文数猜想(