java面向对象的例题

题目:

假如你在做一个王者荣耀的英雄信息系统,游戏中有五中不同的职业,分别是战士、刺客、法师、射手、坦克,这些职业都可以是一个类,而这些职业都是一个个英雄的职称,这五个职业类都可以有一个英雄的父类,父类中可以有一些公共的属性和方法,比如每一个英雄都有名字等。

首先,在测试类创建一个长度为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("修改成功");
    }
}
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值