Как убрать элемент из массива? - PullRequest
0 голосов
/ 18 января 2020

Я сейчас работаю над домашней работой, которая имитирует тревогу, у меня есть метод с именем removeAlarm(), я хочу принудительно удалить добавленную тревогу, я попробовал alarm.remove(0) и попытался выполнить итерацию, но в тестовой программе сигнал тревоги все еще там. Кто-нибудь наблюдает за проблемой?

private ArrayList<String> alarm;

    public AlarmClock() throws IllegalValueException {
        super();
        alarm = new ArrayList<String>();

    }

    public AlarmClock(int hour, int minute) throws IllegalValueException {
        super(hour, minute);
        alarm = new ArrayList<String>();
    }

    public void addAlarm(int hour, int minute) throws IllegalValueException {
        int limit = 2;
        int length = String.valueOf(hour).length();
        String displayValue = "";
        for (int i = 0; i < limit - length; i++) {
            displayValue = displayValue + "0";
        }

        displayValue = displayValue + hour + ":";
        limit = 2;
        length = String.valueOf(minute).length();
        for (int i = 0; i < limit - length; i++) {
            displayValue = displayValue + "0";
        }
        displayValue = displayValue + minute;

        alarm.add(displayValue);

    }


    public void removeAlarm() {
if (alarm.equals(getClass())) {
        alarm.remove(alarm.equals(getTime()));
        }

    }
super.timeTick();
        for (int x = 0; x < alarm.size(); x++) {
            if (alarm.get(x).equals(getTime())) {
                System.out.println("LARMET ÄR KLARR, VAKNAAAAA");
                alarm.remove(x);

            } else {
                return;
            }
        }

Моя тестовая программа

try {
            AlarmClock alarm = new AlarmClock(12, 3);
            alarm.timeTick();
            System.out.println(alarm.getTime());
            alarm.timeTick();
            System.out.println(alarm.getTime());
            alarm.removeAlarm();
            alarm.addAlarm(12, 6);
            alarm.timeTick();
            System.out.println(alarm.getTime());

        } catch (IllegalValueException a) {

            System.out.println(a.getMessage());
        }
        System.out.println("Expected: alarm removed at 12:06 ");
        System.out.println(" ");

Output
12:04
12:05
LARMET ÄR KLARR, VAKNAAAAA
12:06
Expected: alarm removed at 12:06 

1 Ответ

0 голосов
/ 18 января 2020

alarm.remove (0) удалит первый элемент в списке. Чтобы удалить элемент из любого места в списке, функция должна быть

void removeAlarm(int target) {

  alarm.remove(target);

}

или

void removeAlarm(int hour, int min) {

  alarm.remove{hour+":"+min);
}

для простого удаления последней тревоги:

void removeLastAlarm() {

  alarm.remove(alarm.size()-1);
}
...