第一次Java出题

定义一个王者荣耀成员类moba,
其私有数据成员有血量blood(初始为100)、攻击力fire(初始为15)、防御defend(初始为10)、已经创建的成员个数sum(初始化为0),
公有函数成员包括吃饭eat()、运动sport()、睡觉sleep()、获得个数getsum()、前者打败后者defeat(moba a,moba b)【defeat规则:前者夺取后者所有,后者清零】
其中,吃饭使血量加50,运动使攻击力加10,睡觉使防御力加2。

主函数已经给出,请根据主函数编写此类。
public static void main(String[] args) {
        moba m1=new moba();
        System.out.println(moba.getsum());
        System.out.println(m1.blood+" "+m1.fire+" "+m1.defend);
        
        moba m2=new moba();
        for(int i=0;i<15;i++) {
            if(i<=6) {
                m2.sport();
            }
            if(i<=10) {        
                m2.sleep();
            }
            else if(i<14) {
                m2.eat();
            }
        }
        System.out.println(moba.getsum());
        System.out.println(m2.blood+" "+m2.fire+" "+m2.defend);
        moba.defeat(m1,m2);
        System.out.println(m1.blood+" "+m1.fire+" "+m1.defend);
        System.out.println(m2.blood+" "+m2.fire+" "+m2.defend);
    }


正确结果:
1
100 15 10
2
250 85 32
350 100 42
0 0 0

//以下为官方答案

public class Hello {

    public static class moba{

        private int blood=100;

        private int fire=15;

        private int defend=10;

        private static int sum=0;

        public void eat() {

            blood+=50;

        }

        public void sport() {

            fire+=10;

        }

        public void sleep() {

            defend+=2;

        }

        moba(){

            sum++;

        }

        public static int getsum() {

            return sum;

        }

        public static void defeat(moba a,moba b) {

            a.blood+=b.blood;

            a.fire+=b.fire;

            a.defend+=b.defend;

            b.blood=0;

            b.defend=0;

            b.fire=0;

        }

    };

   

    //注释部分是不给的

    public static void main(String[] args) {

        moba m1=new moba();

        System.out.println(moba.getsum());

        System.out.println(m1.blood+" "+m1.fire+" "+m1.defend);

       

        moba m2=new moba();

        for(int i=0;i<15;i++) {

            if(i<=6) {//7次     7*10+(原有)10

                m2.sport();

            }

            if(i<=10) {//11次 11*2+(原有)15

                m2.sleep();

            }

            else if(i<14) {//3次 3*50+(原有)100

                m2.eat();

            }

        }

        System.out.println(moba.getsum());

        System.out.println(m2.blood+" "+m2.fire+" "+m2.defend);

        moba.defeat(m1,m2);

        System.out.println(m1.blood+" "+m1.fire+" "+m1.defend);

        System.out.println(m2.blood+" "+m2.fire+" "+m2.defend);

    }

}

 

//输出答案

//1

//100 15 10

//2

//250 85 32

//350 100 42

//0 0 0

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