第一块是我们创建的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()
				);
	}

}

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐