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
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/501019.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python读单行文本求平均值_利用Python读取json数据并求数据平均值

要做的事情&#xff1a;一共十二个月的json数据(即12个json文件)&#xff0c;json数据的一个单元如下所示。读取这些数据&#xff0c;并求取各个(100多个)城市年、季度平均值。 { "time_point": "2014-01", "area": "***", "aqi&…

netty cpu 占用率 高_Netty 是如何支撑高性能网络通信的?

作为一个高性能的 NIO 通信框架&#xff0c;Netty 被广泛应用于大数据处理、互联网消息中间件、游戏和金融行业等。大多数应用场景对底层的通信框架都有很高的性能要求&#xff0c;作为综合性能最高的 NIO 框架 之一&#xff0c;Netty 可以完全满足不同领域对高性能通信的需求。…

JAVA进阶教学之(单链表数据结构)

什么是链表&#xff1a; 内存地址不连续&#xff0c;基本单元是节点对象Node&#xff0c;单链表尾结点默认是null 什么是链表中的节点&#xff1a; 节点是单链表中的基本单元&#xff0c;每一个节点都有两个属性 属性一&#xff1a;存储的数据 属性二&#xff1a;下一个节点的内…

eclipse maven打包_Maven 学习

1 Maven 简介Maven 使用项目对象模型&#xff08;POM&#xff0c;Project Object Model&#xff09; 的概念&#xff0c;可以通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具2 Maven 的下载与IDE 的整合1 下载地址http://maven.apche.org2 Eclipse 整合Mave…

vue如何输出一个值_如何利用vue获取当前点击的元素并传值(图文教程) -

thinkphp开发的一个项目&#xff0c;登录成功后又跳转到登录页面&#xff0c;在提交信息后输出session都是正常的&#xff0c;没有问题&#xff0c;但是页面跳转后&#xff0c;session出现丢失现象&#xff0c;无法正常完成登陆。通过查找资料&#xff0c;发现原来是bom头的原因…

JAVA进阶教学之(泛型)

泛型 引言&#xff1a; 泛型&#xff1a;泛型允许程序员在编写代码时使用一些以后才指定的类型&#xff0c;在实例化时作为参数指明这些类型人话&#xff1a;泛型对规定范围产生约束&#xff0c;约束后只能存储泛型指定的类型诞生&#xff1a;JDK5.0以后作用&#xff1a;泛型旨…

python怎么设置代码执行时间_python 代码运行时间获取方式详解

我们知道为了提高代码的运行速度&#xff0c;我们需要对书写的python代码进行性能测试&#xff0c;而代码性能的高低的直接反馈是电脑运行代码所需要的时间。这里将介绍四种常用的测试代码运行速度的方法。 第一种&#xff1a;使用time模块对代码的运行时间进行统计&#xff0c…

JAVA进阶教学之(foreach)

foreach&#xff1a; 概念&#xff1a;就是for循环的一个增强版&#xff0c;可以方便程序员对于数组的直接操作&#xff0c;不用考虑数组下标的情况下进行遍历输出 代码演示&#xff1a; package com.lbj.javase.collection;public class ForEachTest01 {public static void m…

c语言与python通信_C和Python – 与套接字通信

我正在尝试使用UNIX域套接字在C程序和 Python脚本之间进行通信. Python脚本通过UNIX域套接字将数据发送到C程序. 这是我的C程序的相关代码&#xff1a; #include #include #include #include #include #include #define UNIX_PATH_MAX 100 int main(void) { struct socka…

口琴膜片什么作用_2020年半音阶口琴选购攻略,让小白告别选择困难

为什么我会喜欢上口琴&#xff0c;其实是因为小时候看到《数码宝贝》里的阿和吹奏口琴&#xff0c;当时觉得很酷。不过家里条件很差&#xff0c;想要一个但是没提&#xff0c;后来工作买了一把铃木的。不过选口琴是一个很麻烦的事情&#xff0c;品类太多。在了解的过程中&#…

JAVA进阶教学之(集合)

目录 1、集合概述 2、集合存储的数据类型 3、不同的集合&#xff0c;底层都会对应不同的数据结构 4、集合继承结构图&#xff08;部分接口和类&#xff09; 5、Collection接口中常用的方法 6、Collection 集合迭代&#xff08;遍历&#xff09; 7、Collection的contains…

python中有数组吗_python有数组吗

广告关闭 腾讯云11.11云上盛惠 &#xff0c;精选热门产品助力上云&#xff0c;云服务器首年88元起&#xff0c;买的越多返的越多&#xff0c;最高返5000元&#xff01;感悟&#xff1a; 1.python列表操作里不允许变量类型的指针2.case1类似于冒泡排序操作&#xff0c;这个是满足…

flutter天气_牛笔!自己用Flutter撸一个天气APP

这是一款简约风格的 flutter 天气项目&#xff0c;提供实时、多日、24 小时、台风路径以及生活指数等服务&#xff0c;支持定位、删除、搜索等操作。下图为主页效果&#xff1a;开始本身作为天气 APP&#xff0c;自定义绘制自然少不了&#xff0c;首页多样的背景效果&#xff0…

电脑远程凭证不工作:解决

电脑 远程桌面连接你的凭据不工作解决方法 方法/步骤 第一步我们首先需要知道远程桌面连接你的凭据不工作原因是&#xff0c;远程的电脑拒绝了访问&#xff0c;需要设置在远程的电脑上设置安全选项&#xff0c;按winR键&#xff0c;打开运行&#xff0c;输入“gpedit.msc”&a…

python汉诺塔递归算法_Python文摘:汉诺塔问题与递归算法

历史传说&#xff1a; 在世界中心贝拿勒斯&#xff08;在印度北部&#xff09;的圣庙里&#xff0c;一块黄铜板上插着三根宝石针。印度教的主神梵天在创造世界的时候&#xff0c;在其中一根针上从下到上地穿好了由大到小的64片金片&#xff0c;这就是所谓的汉诺塔。不论白天黑夜…

python print格式化输出类型_第一讲:Python print() 格式化输出

由于书本上少了这个知识&#xff0c;所以总结如下&#xff0c;各同学看完后完成对应的试题&#xff1a;格式符为真实值预留位置&#xff0c;并控制显示的格式。格式符可以包含有一个类型码&#xff0c;用以控制显示的类型&#xff0c;如下:%s 字符串 (采用str()的显示)%r …

转-递归教学

作者&#xff1a;帅地 链接&#xff1a;https://www.zhihu.com/question/31412436/answer/683820765 来源&#xff1a;知乎 著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。 递归专题连续刷题半年&#xff0c;从小白到学会了套路&#xff…

android游戏编程之从零开始_纯C语言程序员写的编程新手入门基础小游戏之最炫酷推箱子...

很多编程爱好者都编写过推箱子游戏编程吧&#xff0c;最近有好些朋友看见我以前的推箱子程序后&#xff0c;问我是怎么做的。我一直想把这个程序的整个过程写一份详细的东西&#xff0c;与各位编程爱好者分享&#xff0c;一直没空。正好现在放假了&#xff0c;而且离回家还有几…

数据库新增幂等操作_使用数据库唯一键实现事务幂等性

幂等性概念在分布式系统中&#xff0c;幂等性是一致性方面的一个重要概念。幂等(idempotent、idempotence)是一个数学与计算机学概念&#xff0c;常见于抽象代数中。在编程中一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。所谓“影响相同”&#xff…

python re模块compile_Python re模块的match方法

pattern re.compile("\d") 将正则表达式编译成一个Pattern规则对象 pattern.match() 从开始位置开始往后查找&#xff0c;返回第一个符合规则的对象 pattern.search() 从任何位置开始往后查找&#xff0c;返回第一个符合规则的对象 pattern.findall() 所有的全部匹配…