第二次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 + "]";

    }

   

}

 

posted on 2017-11-08 16:15  一起笑官博  阅读(304)  评论(0编辑  收藏  举报