第二次Java出题

均参与出题与答案

3.5部分:

判断题:

  1. int a[5];

a[0]=1;

此时a[0]结果是1

  1. 因为java是数组对象,所以要分配内存,样例:int a[5]=new int[5];
  2. Int []a=new int[5];可我们需要九个,不够用了,所以重新分配一块大点的内存int []a=new int[10];

1.Int [][]a=new int[][6];

2.Int [3][2]a={{1,2},{1,2},{1,2}};

选择题:

3.int [][]in= {{1,2},{3,4}};

int [][]in2= new int[2][2];

System.arraycopy(in, 0, in2, 0, 2);

in[0][0]=6;

System.out.println(in2[0][0]+in2[0][1]);

输出结果是:

A. 1 2

B. 3

C. 6 2

D. 8

判断选择答案:

判断题全 false

一.a[0]=1是错的,没有分配内存,就谈不上a[0]的数值了

二、动态分配前面不可以加那个5(也不要误以为静态分配就可以,貌似是都不可以。。。)

三.不可二次分配(数组大小是确定的),好像都不能写

四、先左后右

五、静态可以确认个数的时候,前面不可标记3 2

D 只拷贝第一维。6+2=8

3.3/3.4部分

编程题:

FIGHT吧,王者

注:读音参照摔跤吧,爸爸

定义一个王者荣耀成员父类Moba,

其公有数据成员有满血时血量full,名字name,当前血量blood、攻击力fire、防御defend,经验experience【初始化为0】,等级grade【初始化为1】

构造方法:Moba(String name,int blood,int fire,int defend,int full){}

抽象方法:public abstract void say();

公有方法包括死后复活back()【有两行输出,见样例】,升级promote()【等级加1,有一行输出】,死亡death()【一行输出】,互相攻击fight(moba a,moba b)【首先一行输出谁打谁;然后前者经验值增加500,后者生命值减少前者攻击力与后者防御力的差值,并判断前者是否升级(每当经验>=等级*1000时,升级),如果是,则调用相关函数;判断后者是否死亡,如果是,则调用相关函数;然后后者经验值增加500,前者生命值减少后者攻击力与前者防御力的差值,并判断后者是否升级(每当经验>=等级*1000时,升级),如果是,则调用相关函数;判断前者是否死亡,如果是,则调用相关函数;最后输出前者和后者各自的剩余血量】

以下三个类是Moba的子类,其数据成员如下

BaiLi百里守约:full和blood:400,fire:700,defend 400;重写的一个方法public
String toString()返回值参考样例最后一行输出    重写父类say方法,输出百里守约:关于取下敌人性命这件事,也从不失约!

SunWu孙悟空:full和blood:600,fire:500,defend 500;私有方法被火焰灼烧效果be_fired()【血量减少50】    重写父类say方法,输出孙悟空:俺老孙来也!

CaiWen蔡文姬:full和blood:1100,fire:200,defend 600;私有方法加血技能 add(moba  ...a)【如果队友(包含自己)非阵亡状态并且非满血状态(满血状态有一行输出),才会执行加血(有两行输出,加至满血和未满血输出不同】

重写父类say方法,输出 蔡文姬:出发喽!蹂躏脑筋不好的老年人~

主方法和run方法已经给出,请编写这些类:

public static void run(Moba m) {

m.say();

}

public static void main(String[] args) {

SunWu
sw=new SunWu();

BaiLi
bl=new BaiLi();

CaiWen cw=new CaiWen();

Moba
m=sw;

run(m);

m=bl;

run(m);

m=cw;

run(m);

System.out.println(sw instanceof Moba && bl instanceof Moba && cw instanceof Moba);

//孙悟空和百里守约互打

while(bl.blood>0&&sw.blood>0) {

Moba.fight(sw, bl);

}

//蔡文姬释放加血技能

cw.add(cw,bl,sw);

//复活战败者

if(bl.blood<=0) {

bl.back();

}

else {

sw.back();

}

//孙悟空被火焰烫伤

sw.be_fired();

//蔡文姬释放加血技能

cw.add(cw,bl,sw);

System.out.println(bl);

}

输出:

孙悟空:俺老孙来也!

百里守约:关于取下敌人性命这件事,也从不失约!

蔡文姬:出发喽!蹂躏脑筋不好的老年人~

true

孙悟空和百里守约打架

孙悟空剩余血量400

百里守约剩余血量300

孙悟空和百里守约打架

孙悟空升级 当前等级2

百里守约升级 当前等级2

孙悟空剩余血量200

百里守约剩余血量200

孙悟空和百里守约打架

孙悟空被击杀

孙悟空剩余血量0

百里守约剩余血量100

蔡文姬满血不需要加血

蔡文姬帮百里守约加血

百里守约此时的血量150

孙悟空复活ing

孙悟空复活

蔡文姬满血不需要加血

蔡文姬帮百里守约加血

百里守约此时的血量200

蔡文姬帮孙悟空加满血

孙悟空此时的血量600

BaiLi [name=百里守约, blood=200, fire=700, defend=400, experience=1500, full=400,
grade=2]

答案:

package yqx_Moba;

public class Test {

//考察多态

public static void run(Moba m) {

m.say();

}

public static void main(String[] args) {

SunWu
sw=new SunWu();

BaiLi
bl=new BaiLi();

CaiWen
cw=new CaiWen();

Moba m=sw;

run(m);

m=bl;

run(m);

m=cw;

run(m);

//小试instanceof(顺便避免不按套路出牌)

System.out.println(sw instanceof Moba && bl instanceof Moba && cw instanceof Moba);

//孙悟空和百里守约互打

while(bl.blood>0&&sw.blood>0) {

//类名.方法名访问类内静态方法

Moba.fight(sw, bl);

}

//蔡文姬释放加血技能

cw.add(cw,bl,sw);

//复活战败者

if(bl.blood<=0) {

bl.back();

}

else {

sw.back();

}

//孙悟空被火焰烫伤

sw.be_fired();

//蔡文姬释放加血技能

cw.add(cw,bl,sw);

//考察toString的改写

System.out.println(bl);

}

}

package yqx_Moba;

//抽象类

public abstract class Moba {

public String name;

public int blood;

public int fire;

public int defend;

//直接初始化

public int experience=0;

public int full;

public int grade=1;

Moba(String
name,int blood,int fire,int defend,int full){

//this

this.name=name;

this.blood=blood;

this.fire=fire;

this.defend=defend;

this.full=full;

}

//static 
供主方法使用  类.方法名  形式访问

public static void fight(Moba a,Moba b) {

System.out.println(a.name+"和"+b.name+"打架");

b.blood-=(a.fire-b.defend);

a.experience+=500;

a.blood-=(b.fire-a.defend);

b.experience+=500;

if(a.experience>=a.grade*1000) {

a.promote();

}

if(b.blood<=0) {

b.death();

}

if(b.experience>=b.grade*1000) {

b.promote();

}

if(a.blood<=0) {

a.death();

}

print_blood(a,b);

}

public void back() {

System.out.println(name+"复活ing");

blood=full;

System.out.println(name+"复活");

}

public void promote() {

grade++;

System.out.println(name+"升级"+" 当前等级"+grade);

}

public void death() {

System.out.println(name+"被击杀");

}

public static void print_blood(Moba ...a) {

for(int i=0;i<a.length;i++) {

System.out.println(a[i].name+"剩余血量"+a[i].blood);

}

}

//抽象方法

public abstract void say();

}

package yqx_Moba;

public class CaiWen extends Moba{

CaiWen(){

//super

super("蔡文姬",1400,200,600,1400);

}

//...的应用

public void add(Moba ...a) {

for(int i=0;i<a.length;i++) {

//死了就不加血了

int flag=0;

if(a[i].blood<=0) {

continue;

}

else if(a[i].blood==a[i].full) {

flag=1;

}

a[i].blood+=50;

if(a[i].blood>=a[i].full) {

a[i].blood=a[i].full;

}

if(flag==1) {

System.out.println(a[i].name+"满血不需要加血");

}

else if(a[i].blood==a[i].full)

{

if(a[i].name=="蔡文姬")

{

System.out.println("蔡文姬帮自己加满血");

}

else

{

System.out.println("蔡文姬帮"+a[i].name+"加满血");

}

System.out.println(a[i].name+"此时的血量"+a[i].blood);

}

else

{

if(a[i].name=="蔡文姬")

{

System.out.println("蔡文姬帮自己加血");

}

else

{

System.out.println("蔡文姬帮"+a[i].name+"加血");

}

System.out.println(a[i].name+"此时的血量"+a[i].blood);

}

}

}

//重写父类抽象方法

public void say() {

System.out.println("蔡文姬:出发喽!蹂躏脑筋不好的老年人~");

}

}

package yqx_Moba;

public class SunWu extends Moba{

SunWu(){

//super

super("孙悟空",600,500,500,600);

}

public void be_fired() {

blood-=50;

}

//重写父类抽象方法

public void say() {

System.out.println("孙悟空:俺老孙来也!");

}

}

package yqx_Moba;

public class BaiLi extends Moba{

BaiLi(){

//super

super("百里守约",400,700,400,400);

}

//重写父类抽象方法

public void say() {

System.out.println("百里守约:关于取下敌人姓名这件事,也从不失约!");

}

//重写Object类toString方法

@Override

public String toString() {

return "BaiLi
[name=" + name + ", blood=" + blood + ", fire=" + fire + ", defend=" + defend + ", experience="

+
experience + ", full=" + full + ", grade=" + grade + "]";

}

}

时间: 2024-10-21 01:34:42

第二次Java出题的相关文章

第二节 Java Swing中的基本容器:JFrame

第二节 基本容器:JFrame 如果要使用Swing创建一个窗口,则直接使用JFrame即可,此类事Component类的子类,常用方法如下: 小试牛刀 创建一个简单的窗口 import java.awt.*; import java.io.*; import javax.swing.*; public class JavaSwingTest { public static void main(String args[]) throws IOException{ test1(); } //创建一

《深入理解Java虚拟机》读书笔记---第二章 Java内存区域与内存溢出异常

Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来.这一章就是给大家介绍Java虚拟机内存的各个区域,讲解这些区域的作用,服务对象以及其中可能产生的问题. 1.运行时数据区域 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域. 1.1程序计数器 程序计数器(Program Counter Register)是一块较小的内存空间,它的作用可以看作是当前线程所执行的字节码的行号指示器.在虚拟机的概念模型中里,字

Java图示(第二章 Java语言基础)

Java图示(第二章 Java语言基础) 三个基本部分:一个包声明(package语句).任意数量的引入(import语句).类和接口声明(class和interface语句) 1.包声明—package语句 1)包是类和接口的集合,即类库 2)用类库管理类,方便管理 3)Java类都在类库中 4)只有一条包声明,且为第一条 2.引入语句—import语句 1)import语句在包语句后,所有类或接口前 2)两种形式 (1)import 包名.类名: (2)import 包名*://编译器会识别

开学第二周Java课堂测验暨简易出题代码

代码可以实现的功能包括实现两位数的四则运算,并同时保证乘法的结果不超过100,除法的结果为整数,减法的结果为正. 除此以外,用户还可以设置出题的数量,以及每一行的题目数目. 源码为:2901583663 package first; import java.util.Scanner;import java.util.Random;public class one {static Scanner sc = new Scanner(System.in); public static void mai

第二章 Java浮点数精确计算

1.实际意义 在实际开发中,如果需要进行float或double的精确计算(尤其是财务计算),直接使用float或double是不行的(具体的例子看下边的代码的main方法的测试结果),需要使用BigDecimal. 2.代码 package com.xxx.util; import java.math.BigDecimal; /** * 浮点数精准算法 */ public class BigDecimalArithUtil { private static final int DIV_SCAL

第二章 Java框架整合--maven父子模块

2.1.maven父子模块 在实际开发中,我们基本都会用maven父子分模块的方式进行项目的开发. 2.2.实际操作 2.2.1.手工建立一个ssmm0的文件夹,并在该文件夹中加入一个pom.xml文件,该pom.xml文件内容如下: 1 <?xml version="1.0" encoding="UTF-8"?> 2 <project xmlns="http://maven.apache.org/POM/4.0.0" xmln

第二章 Java内存区域与内存溢出异常

1.程序计数器(Program Counter Register) 是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器. 2.Java虚拟机栈(Stack)线程私有,每一个方法调用时都会创建一个栈帧(Stack Frame)用于存储局部变量表.操作数栈.动态链接.方法出口等信息.局部变量存放了编译期可知的各种基本数据类型(boolean,byte,char,short,int,float,long,double).对象引用(reference类型)和returnAddress类

201671010115 2016-2017-2《Java程序设计》第二周Java心得

第二周很快地结束了,我学习Java这门新语言也有两周了,对老师的课堂也基本适应了.在这一周我们学习了Java基本程序设计结构,这一章节的内容基本上跟我原来学过的C语言是类似的,就像标识符.关键字.注释等.因为有了C的基础,我学习起这一章不是太困难. 我学到了不同于C语言的内容,在标识符方面,标识符的定义有了改变(新增了美元符号$),在数据类型方面,整型变量新增了byte类型,没有了unsigned类型:还新增了布尔类型boolean,用于判定逻辑条件:还有整型值与布尔值之间不能进行相互转换.在运

第二天 Java语言基础

一.如何定义Java中的类 Java代码都定义在类中,类由class来定义,区分public class和class: 二.main方法的作用 main方法是程序的入口:保证程序的独立运行:被JVM调用 三.Java语言分隔符 分号:语句的分割,表示一句话结束,好比咱们使用的句号: 花括号{}:表示一个代码块,是一个整体,花括号要一起使用: 方括号[];定义数组和访问数组元素时使用: 圆点. 类/对象 访问它的成员(字段,方法)时使用等. 空格    分割一条语句的不同部分,空格的次数不限制: