@Amir1807

Как выбросить IllegalArgumentException, если значение slot некорректно?

У меня есть класс Player и в нем есть метод shotWithWeapon, нужно выбросить исключение IllegalArgumentException, если значение slot некорректно. И чтоб в методе main при вводе не правильного значения с клавиатуры выводило соответствующее исключение.
public class PlayerMain {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        Player player = new Player();

        System.out.println("Список оружии: " + "\n0.Пистолет\n1.Автомат\n2.Рпг\n3.Рогатка\n4.Водный пистолет\n");

        System.out.format("У игрока %d слотов с оружием,"
                        + " введите номер, чтобы выстрелить,"
                        + " -1 чтобы выйти:%n"
                , player.getSlotsCount()
        );

        int slot = scanner.nextInt();

        while (slot != -1) {
            switch (slot) {
                case 0:
                    player.shotWithWeapon(0);
                    break;
                case 1:
                    player.shotWithWeapon(1);
                    break;
                case 2:
                    player.shotWithWeapon(2);
                    break;
                case 3:
                    player.shotWithWeapon(3);
                    break;
                case 4:
                    player.shotWithWeapon(4);
                    break;
                default:

                    System.out.println("Выберите оружие от 0 до 4");
                    break;
            }
            slot = scanner.nextInt();
        }




        System.out.println("Game Over!");

    }
}


В классе Player нужно выбросить исключение в методе shotWithWeapon

public class Player {
    // Указываем тип данных Weapon, который будет храниться в "слотах игрока"

    private Weapon[] weaponSlots;

    public Player() {
        weaponSlots = new Weapon[]{
                new Pistol(),
                new MachineGun(),
                new RPG(),
                new Slingshot(),
                new WaterGun()
        };
    }

    public int getSlotsCount() {
        return weaponSlots.length;
    }

    public void shotWithWeapon(int slot)  {
        //TODO проверить на выход за границы
        // Проверить на выход за границы
        // Выбросить IllegalArgumentException, если значение slot некорректно

        Weapon weapon = weaponSlots[slot];
        weapon.shot();
    }


}
  • Вопрос задан
  • 163 просмотра
Решения вопроса 1
azerphoenix
@azerphoenix Куратор тега Java
Java Software Engineer
Условно говоря, вам нужно проверить не является ли переданное методу shotWithWeapon() значение slot меньше 0. Используйте конструкцию if. Дальше было бы неплохо узнать, каким типом данных является Slot. Например, если это массив, то нужно проверить входит ли переданное значение в массив значений. Ну а дальше внутри конструкции

public void shotWithWeapon(int slot)  {
if (slot < 0 || другие условия) {
throw new IllegalArgumentException();
}
        //TODO проверить на выход за границы
        // Проверить на выход за границы
        // Выбросить IllegalArgumentException, если значение slot некорректно

        Weapon weapon = weaponSlots[slot];
        weapon.shot();
    }
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Bell Integrator Ульяновск
До 400 000 ₽
Bell Integrator Хабаровск
До 400 000 ₽
Bell Integrator Ижевск
До 400 000 ₽
18 апр. 2024, в 21:56
2000 руб./за проект
18 апр. 2024, в 21:00
150 руб./за проект