@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();
    }


}
  • Вопрос задан
  • 53 просмотра
Решения вопроса 1
azerphoenix
@azerphoenix Куратор тега Java
Условно говоря, вам нужно проверить не является ли переданное методу 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();
    }
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Emphasoft Санкт-Петербург
от 200 000 до 400 000 ₽
от 140 000 до 230 000 ₽
от 150 000 до 400 000 ₽
01 мар. 2021, в 00:47
300000 руб./за проект
01 мар. 2021, в 00:29
5555 руб./за проект