题目:
假如你在做一个王者荣耀的英雄信息系统,游戏中有五中不同的职业,分别是战士、刺客、法师、射手、坦克,这些职业都可以是一个类,而这些职业都是一个个英雄的职称,这五个职业类都可以有一个英雄的父类,父类中可以有一些公共的属性和方法,比如每一个英雄都有名字等。
首先,在测试类创建一个长度为10的数组。
请你实现:
(添加职业)使用Scanner在控制台输入“添加”进入添加功能,输入英雄的名称、职业等等属性完成往数组添加一个职业对象。
(查看职业)使用Scanner在控制台输入“查看”就可以查看数组中的所有对象。
(修改职业)使用Scanner在控制台输入“修改”进入修改功能,首先输入英雄的名称找到这个对象,再输入修改后的值修改这个对象。
代码如下:
// 英雄类
public abstract class Hero {
private String name; // 英雄名称
public Hero(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
// 职业类
public class Warrior extends Hero {
public Warrior(String name) {
super(name);
}
}
public class Assassin extends Hero {
public Assassin(String name) {
super(name);
}
}
public class Mage extends Hero {
public Mage(String name) {
super(name);
}
}
public class Archer extends Hero {
public Archer(String name) {
super(name);
}
}
public class Tank extends Hero {
public Tank(String name) {
super(name);
}
}
// 测试类
import java.util.Scanner;
public class Test {
private static Hero[] heroes = new Hero[10]; // 创建长度为10的数组
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.println("请输入命令:添加、查看、修改");
String command = scanner.nextLine();
switch (command) {
case "添加":
addHero(scanner);
break;
case "查看":
viewHero();
break;
case "修改":
modifyHero(scanner);
break;
default:
System.out.println("无效的命令");
}
}
}
private static void addHero(Scanner scanner) {
System.out.println("请输入英雄名称:");
String name = scanner.nextLine();
System.out.println("请输入职业:1-战士,2-刺客,3-法师,4-射手,5-坦克");
int job = scanner.nextInt();
switch (job) {
case 1:
heroes[heroes.length - 1] = new Warrior(name);
break;
case 2:
heroes[heroes.length - 1] = new Assassin(name);
break;
case 3:
heroes[heroes.length - 1] = new Mage(name);
break;
case 4:
heroes[heroes.length - 1] = new Archer(name);
break;
case 5:
heroes[heroes.length - 1] = new Tank(name);
break;
default:
System.out.println("无效的职业");
return;
}
System.out.println("添加成功");
}
private static void viewHero() {
for (int i = 0; i < heroes.length; i++) {
System.out.println((i + 1) + ":" + heroes[i].getName());
}
}
private static void modifyHero(Scanner scanner) {
System.out.println("请输入要修改的英雄序号:");
int index = scanner.nextInt() - 1;
if (index < 0 || index >= heroes.length) {
System.out.println("无效的序号");
return;
}
System.out.println("请输入新的英雄名称:");
String name = scanner.nextLine();
heroes[index].setName(name);
System.out.println("修改成功");
}
}