JAVA进阶开发之(数组练习题)
1、題目:
- 寫一個Army類,代表一支軍隊
- 這個類有一個屬性,Weapon[ ]? w? 數組,用來存儲該軍隊所有武器
- Army類提供一個構造方法,構造方法里面通過傳遞一個int類型的參數來限定該類所能擁有的最大武器數量,并用這一大小來初始化數組 w
- Army類提供一個addWeapon(Weapon wa)方法,表示把參數wa 所代表的武器加入到數組w中
- 在這個類中還定義兩個方法attrackAll()讓w 數組中的所有武器攻擊
- 以及moevAll( )? 讓w 數組中的所有可移動的武器移動
- 寫一個主方法進行測試
?
?提示:
Weapon是一個父類,應該有很多子武器,這些子武器應該有一些是可以移動的,有一些是可以攻擊的
?
代碼演示:
創建武器類:
package com.lbj.javase.array.homework;/*** @author LBJ* @version V1.0* @Package com.lbj.javase.array.homework* @date 2021/3/26 20:49* @Copyright 公司* 武器類*/ public class Weapon {}創建移動的接口和射擊的接口
package com.lbj.javase.array.homework;/*** @author LBJ* @version V1.0* @Package com.lbj.javase.array.homework* @date 2021/3/26 20:45* @Copyright 公司* 可移動的接口*/ public interface Moveable {/*** 可移動的行為*/public void move(); } package com.lbj.javase.array.homework;/*** @author LBJ* @version V1.0* @Package com.lbj.javase.array.homework* @date 2021/3/26 20:47* @Copyright 公司*/ public interface Shootable {/*** 射擊行為*/public void shoot(); }?
?
創建大炮類
package com.lbj.javase.array.homework;/*** @author LBJ* @version V1.0* @Package com.lbj.javase.array.homework* @date 2021/3/26 20:52* @Copyright 公司* 大炮,不可移動,可射擊*/ public class DaPao extends Weapon implements Shootable{@Overridepublic void shoot() {System.out.println("大炮射擊");} }創建飛機類:
package com.lbj.javase.array.homework;/*** @author LBJ* @version V1.0* @Package com.lbj.javase.array.homework* @date 2021/3/26 20:54* @Copyright 公司* 戰斗機,可移動,可開炮*/ public class Fighter extends Weapon implements Moveable,Shootable{@Overridepublic void move() {System.out.println("飛機起飛");}@Overridepublic void shoot() {System.out.println("飛機射擊");} }創建坦克類:
package com.lbj.javase.array.homework;/*** @author LBJ* @version V1.0* @Package com.lbj.javase.array.homework* @date 2021/3/26 20:49* @Copyright 公司* 坦克,可移動可射擊*/ public class Tank extends Weapon implements Moveable,Shootable{@Overridepublic void move() {System.out.println("坦克移動");}@Overridepublic void shoot() {System.out.println("坦克射擊");} }創建物資飛機類:
package com.lbj.javase.array.homework;/*** @author LBJ* @version V1.0* @Package com.lbj.javase.array.homework* @date 2021/3/26 20:55* @Copyright 公司* 物資飛機,可移動不可射擊*/ public class WuZiFly extends Weapon implements Moveable{@Overridepublic void move() {System.out.println("物資飛機起飛");} }創建異常類:
package com.lbj.javase.array.homework;/*** @author LBJ* @version V1.0* @Package com.lbj.javase.array.homework* @date 2021/3/26 21:22* @Copyright 公司*/ public class WeaponIndexOutOfBoundException extends Exception{public WeaponIndexOutOfBoundException() {}public WeaponIndexOutOfBoundException(String message) {super(message);} }?
?
創建武器類:
package com.lbj.javase.array.homework;/*** @author LBJ* @version V1.0* @Package com.lbj.javase.array.homework* @date 2021/3/26 20:57* @Copyright 公司* 軍隊*/ public class Army {/*** 武器數組*/private Weapon[] w;/*** 創建軍隊的方法* @param count 武器數量*/public Army(int count) {//動態初始化數組Weapon[] w=new Weapon[count];this.w = w;}/*** 將武器加入數組* @param weapon*/public void addWeapon(Weapon weapon) throws WeaponIndexOutOfBoundException {for (int i = 0; i <w.length; i++) {if(null==w[i]){w[i]=weapon;System.out.println(weapon+"武器添加成功");return;}}// 程序如果執行到此處說明,武器沒有添加成功throw new WeaponIndexOutOfBoundException("武器數量已經超過武器數組長度");}/*** 所有可攻擊的武器攻擊*/public void attackAll(){//其實就是遍歷數組for (int i = 0; i <w.length; i++) {if (w[i] instanceof Shootable){//調用子類中特有的方法,向下轉型//類在轉成某個接口的時候,不需要有繼承關系Shootable shootable=(Shootable) w[i];shootable.shoot();}}}/*** 所有可移動的武器移動*/public void moveAll(){for (int i = 0; i <w.length; i++) {if (w[i] instanceof Moveable){//調用子類中特有的方法,向下轉型//類在強制 類型轉換的過程中,如果是類轉換成接口類型,不需要有繼承關系Moveable moveable= (Moveable) w[i];moveable.move();}}}}?
?
創建測試類:
package com.lbj.javase.array.homework;/*** @author LBJ* @version V1.0* @Package com.lbj.javase.array.homework* @date 2021/3/26 22:36* @Copyright 公司*/ public class Test {public static void main(String[] args) {//創建一個軍隊Army army=new Army(4);//創建武器DaPao daPao=new DaPao();DaPao daPao2=new DaPao();Fighter fighter=new Fighter();Tank tank=new Tank();WuZiFly wuZiFly=new WuZiFly();//軍隊中加入武器try {army.addWeapon(daPao);army.addWeapon(fighter);army.addWeapon(tank);army.addWeapon(wuZiFly);army.addWeapon(daPao2);} catch (WeaponIndexOutOfBoundException e) {System.out.println(e.getMessage());}//讓所有可移動的移動army.moveAll();//讓所有可射擊的射擊army.attackAll();}}結果:
"C:\Program Files\Java\jdk1.8.0_181\bin\java.exe" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2020.3.1\lib\idea_rt.jar=3649:C:\Program Files\JetBrains\IntelliJ IDEA 2020.3.1\bin" -Dfile.encoding=UTF-8 -classpath "C:\Program Files\Java\jdk1.8.0_181\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\ext\zipfs.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\jfxswt.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\rt.jar;D:\test01-2021-1-20\out\production\test01-2021-1-20;C:\Users\14811\.m2\repository\junit\junit\3.8.2\junit-3.8.2.jar" com.lbj.javase.array.homework.Test
com.lbj.javase.array.homework.DaPao@1540e19d武器添加成功
com.lbj.javase.array.homework.Fighter@677327b6武器添加成功
com.lbj.javase.array.homework.Tank@14ae5a5武器添加成功
com.lbj.javase.array.homework.WuZiFly@7f31245a武器添加成功
武器數量已經超過武器數組長度
飛機起飛
坦克移動
物資飛機起飛
大炮射擊
飛機射擊
坦克射擊
Process finished with exit code 0
?
總結
以上是生活随笔為你收集整理的JAVA进阶开发之(数组练习题)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机模拟量与数字量的转换,在S7-12
- 下一篇: 如何打开屏幕坏的手机_每天打开手机屏幕2