當(dāng)前位置:
首頁(yè) >
写一个类Army,代表一支军队,这个类有一个属性Weapon数组w(用来存储该军队所拥有的所有武器), 该类还提供一个构造方法,在构造方法里通过传一个int类型的参数来限定该类所能拥有
發(fā)布時(shí)間:2025/3/17
44
豆豆
生活随笔
收集整理的這篇文章主要介紹了
写一个类Army,代表一支军队,这个类有一个属性Weapon数组w(用来存储该军队所拥有的所有武器), 该类还提供一个构造方法,在构造方法里通过传一个int类型的参数来限定该类所能拥有
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
代碼
/*開(kāi)放型題目,隨意發(fā)揮:寫(xiě)一個(gè)類(lèi)Army,代表一支軍隊(duì),這個(gè)類(lèi)有一個(gè)屬性Weapon數(shù)組w(用來(lái)存儲(chǔ)該軍隊(duì)所擁有的所有武器),該類(lèi)還提供一個(gè)構(gòu)造方法,在構(gòu)造方法里通過(guò)傳一個(gè)int類(lèi)型的參數(shù)來(lái)限定該類(lèi)所能擁有的最大武器數(shù)量,并用這一大小來(lái)初始化數(shù)組w。該類(lèi)還提供一個(gè)方法addWeapon(Weapon wa),表示把參數(shù)wa所代表的武器加入到數(shù)組w中。在這個(gè)類(lèi)中還定義兩個(gè)方法attackAll()讓w數(shù)組中的所有武器攻擊;以及moveAll()讓w數(shù)組中的所有可移動(dòng)的武器移動(dòng)。寫(xiě)一個(gè)主方法去測(cè)試以上程序。提示:Weapon是一個(gè)父類(lèi)。應(yīng)該有很多子武器。這些子武器應(yīng)該有一些是可移動(dòng)的,有一些是可攻擊的。*/ 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();} } /* 寫(xiě)一個(gè)類(lèi)Army,代表一支軍隊(duì),這個(gè)類(lèi)有一個(gè)屬性Weapon數(shù)組w(用來(lái)存儲(chǔ)該軍隊(duì)所擁有的所有武器),該類(lèi)還提供一個(gè)構(gòu)造方法,在構(gòu)造方法里通過(guò)傳一個(gè)int類(lèi)型的參數(shù)來(lái)限定該類(lèi)所能擁有的最大武器數(shù)量,并用這一大小來(lái)初始化數(shù)組w。該類(lèi)還提供一個(gè)方法addWeapon(Weapon wa),表示把參數(shù)wa所代表的武器加入到數(shù)組w中。在這個(gè)類(lèi)中還定義兩個(gè)方法attackAll()讓w數(shù)組中的所有武器攻擊;以及moveAll()讓w數(shù)組中的所有可移動(dòng)的武器移動(dòng)。 */ public class Army {private Weapon[] w;private int weaponsMaxNumber;//constructorpublic Army() {//默認(rèn)武器數(shù)量為5this(5);}/**** @param weaponsMaxNumber 擁有最大武器的數(shù)量*/public Army(int weaponsMaxNumber) {this.weaponsMaxNumber = weaponsMaxNumber;this.w = new Weapon[weaponsMaxNumber];}/*** 往武器庫(kù)中加入一個(gè)武器* @param weapon 武器*/public void addWeapon(Weapon weapon) throws WeaponException {//判斷武器庫(kù)是否已滿(mǎn)if (findIndex() == w.length-1){throw new WeaponException("武器庫(kù)已滿(mǎn),無(wú)法增加武器!");}w[findIndex()] = weapon;System.out.println("增加武器:" + weapon + "成功!");}/*** 找到為數(shù)組元素為空的最小數(shù)組下標(biāo)* @return 武器庫(kù)中可以存放武器的位置*/public int findIndex(){int index = -1;for (int i = 0; i < w.length; i++) {if (w[i] == null){index = i;break;}}return index;}/*** 讓所有能夠進(jìn)攻的武器進(jìn)攻*/public void attackAll(){for (int i = 0; i < findIndex(); i++) {w[i].attack();}}/*** 讓所有能夠移動(dòng)的武器移動(dòng)*/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("武器在移動(dòng)!");} } 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("手槍在移動(dòng)!");} } public class Cannon extends Weapon{@Overridepublic void attack() {System.out.println("迫擊炮在攻擊!");}@Overridepublic void move() {System.out.println("迫擊炮在移動(dòng)!");}@Overridepublic String toString() {return "迫擊炮";} } public class HospitalShip extends Weapon{@Overridepublic void attack() {System.out.println("醫(yī)院船在攻擊!");}@Overridepublic void move() {System.out.println("醫(yī)院船在移動(dòng)!");}@Overridepublic String toString() {return "醫(yī)院船";} } public class WeaponException extends Exception {public WeaponException(){}public WeaponException(String message){super(message);} }總結(jié)
以上是生活随笔為你收集整理的写一个类Army,代表一支军队,这个类有一个属性Weapon数组w(用来存储该军队所拥有的所有武器), 该类还提供一个构造方法,在构造方法里通过传一个int类型的参数来限定该类所能拥有的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: ZZULIOJ 1052:数列求和4
- 下一篇: ZZULIOJ 1107: 回文数猜想(