第一次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