创建一个英雄类(Hero),私有化属性,给属性赋值,限制属性值范围,不满足则重复输入,在方法内部调用方法,get,set方法
第一块是我们创建的Hero类:/*1,创建一个英雄类(Hero),该类包含姓名(name)、年龄(age)、职业(occupation)、防御值(defense)、攻击值(attack)、血量(output)和魔法值(mana)。2,对该类进行合理封装,要求用户名长度在4~8位之间,请重新输入:,年龄在18~60之间,请重新输入:,职业为系统提供,防御值在5~25之间,请重新输入:,攻击值在...
·
第一块是我们创建的Hero类:
/*
1,创建一个英雄类(Hero),该类包含姓名(name)、年龄(age)、职业(occupation)、防御值(defense)、攻击值(attack)、血量(output)和魔法值(mana)。
2,对该类进行合理封装,要求用户名长度在4~8位之间,请重新输入:,年龄在18~60之间,请重新输入:,职业为系统提供,防御值在5~25之间,请重新输入:,攻击值在30~50之间,请重新输入:,血量在60~75之间,请重新输入:,魔法值在25~45之间,请重新输入:
*/
package com.xjc;
import java.util.Scanner;
public class Hero {
//定义私有属性
private String name;
private int age;
private String occupation;
private int defense;
private int attack;
private int output;
private int mana;
//创建无参构造方法
public Hero() {
super();
}
//定义有参构造方法
public Hero(String name, int age, String occupation, int defense, int attack, int output, int mana) {
super();
this.name = name;
this.age = age;
this.occupation = occupation;
this.defense = defense;
this.attack = attack;
this.output = output;
this.mana = mana;
}
//调用scanner类,实现后面程序中方法内部调用自己时的控制台输入语句
Scanner input = new Scanner(System.in);
//定义私有name属性的set方法
public void setName(String name) {
//判断输入的英雄姓名是否满足命名要求
if (name.length() >= 4 && name.length() <= 8) {
//满足就把输入的值赋值给对象的属性
this.name = name;
} else {
//不满足则给出提示,要求重新输入
System.out.println("对不起,用户名长度在4~8位之间,请重新输入:");
//获取重新输入的值
String name1 = input.next();
//方法内部调用方法,再次进入这个方法,进行判断,不满足就再次要求重新输入,再调用这个方法,直到满足命名要求为止
setName(name1);
}
}
//定义name的get类,用来访问私有name属性
public String getName() {
return name;
}
//以下代码块和上面的实现原理相同,不做赘述
public void setAge(int age) {
if (age >= 18 && age <= 60) {
this.age = age;
} else {
System.out.println("对不起,年龄在18~60之间,请重新输入:");
int age1 = input.nextInt();
setAge(age1);
}
}
public int getAge() {
return age;
}
public void setOccupation(String occupation) {
if (occupation.equals("战士") || occupation.equals("术士") || occupation.equals("法师")) {
this.occupation = occupation;
} else {
System.out.println("对不起,职业为系统提供,请在战士,术士,法师中选择一个,请重新输入:");
String occupation1 = input.next();
setOccupation(occupation1);
}
}
public String getOccupation() {
return occupation;
}
public void setDefense(int defense) {
if (defense >= 5 && defense <= 25) {
this.defense = defense;
} else {
System.out.println("对不起,防御值在5~25之间,请重新输入:");
int defense1 = input.nextInt();
setDefense(defense1);
}
}
public int getDefense() {
return defense;
}
public void setAttack(int attack) {
if (attack >= 30 && attack <= 50) {
this.attack = attack;
} else {
System.out.println("对不起,攻击值在30~50之间,请重新输入:");
int attack1 = input.nextInt();
setAttack(attack1);
}
}
public int getAttack() {
return attack;
}
public void setOutput(int output) {
if (output >= 60 && output <= 75) {
this.output = output;
} else {
System.out.println("对不起,血量在60~75之间,请重新输入:");
int output1 = input.nextInt();
setOutput(output1);
}
}
public int getOutput() {
return output;
}
public void setMana(int mana) {
if (mana >= 20 && mana <= 45) {
this.mana = mana;
} else {
System.out.println("对不起,魔法值在20~45之间,请重新输入:");
int mana1 = input.nextInt();
setMana(mana1);
}
}
public int getMana() {
return mana;
}
}
下面的就是测试类了:
/*
1,创建一个英雄类(Hero),该类包含姓名(name)、年龄(age)、职业(occupation)、防御值(defense)、攻击值(attack)、血量(output)和魔法值(mana)。
2,对该类进行合理封装,要求用户名长度在4~8位之间,年龄在18~60之间,职业为系统提供,防御值在5~25之间,攻击值在30~50之间,血量在60~75之间,魔法值在25~45之间
*/
package com.xjc;
import java.util.Scanner;
public class Herotest {
public static void main(String[] args) {
// TODO Auto-generated method stub
//创建一个Hero类的属性h1
Hero h1=new Hero();
Scanner input=new Scanner(System.in);
//给出输入提示
System.out.println("请输入英雄姓名:");
//获取用户输入
String name=input.next();
//调用对象h1的setName方法,给name属性赋值(在Hero类里面完成输入值的判断,满足就赋值,不满足会再次提醒输入)
h1.setName(name);
System.out.println("请输入英雄年龄:");
int age=input.nextInt();
h1.setAge(age);
System.out.println("请在:战士,术士,法师中选择一个英雄职业:");
String occupation=input.next();
h1.setOccupation(occupation);
System.out.println("请输入英雄防御值:");
int defense=input.nextInt();
h1.setDefense(defense);
System.out.println("请输入英雄攻击值:");
int attack=input.nextInt();
h1.setAttack(attack);
System.out.println("请输入英雄的血量:");
int output=input.nextInt();
h1.setOutput(output);
System.out.println("请输入英雄魔法值:");
int mana=input.nextInt();
h1.setMana(mana);
//输出对象h1的各个属性值(因为我们在Hero类中给这些属性定义的是私有化属性,所以要用get方法才能访问到它的值)
System.out.println(
"英雄名称:"+h1.getName()+"\t"+
"英雄年龄:"+h1.getAge()+"\t"+
"英雄职业:"+h1.getOccupation()+"\t"+
"英雄防御值:"+h1.getDefense()+"\t"+
"英雄攻击值:"+h1.getAttack()+"\t"+
"英雄血量:"+h1.getOutput()+"\t"+
"英雄魔法值:"+h1.getMana()
);
}
}
更多推荐



所有评论(0)