Как я могу исправить метод toArray в конце? - PullRequest
0 голосов
/ 09 февраля 2019

Итак, ранее я задал вопрос о том, как использовать логические значения для доступа к другому концу моего стека.Так что я исправил это :)

Если бы я застрял сейчас, это в конце;Я не знаю, как реализовать метод toArray из интерфейса ... муравей комментарии или советы о том, как это исправить?# noob

Я отправил свой логический метод push для @NoStupidQuestions: D

public class TwoStackArray<E> implements Twostack<E> {

    // lots of code emitted...

    @Override
    public void push(Boolean right, E element) throws TwostackFullException {
        if (numberOfElement == size - 1) {
            throw new TwostackFullException("Stack overflow");
        }

        if (right) {
            arr[rightIndex] = element;
            rightIndex--;
        } else {
            arr[leftIndex] = element;
            leftIndex++;
        }

        numberOfElement++;
    }

    // lots of code emitted......................

    @Override
    public <T> T[] toArray(T[] a) {
        for (int i = 0; i < numberOfElement; i++) {
            System.out.println(arr[i]);
        }
    }

}

IJ говорит мне, что в последнем методе отсутствует return ... но я только что угадал метод for loop / printздесь ... не уверен, как решить эту проблему

1 Ответ

0 голосов
/ 09 февраля 2019

У вас есть 2 варианта:

  1. Вернуть массив, который вы сначала вставили, изменив функцию на Array на:
@Override
public <T> T[] toArray(T[] a) {
    for (int i = 0; i < a.length; i++) {
        System.out.println(a[i]);
    }
    return a;
}
Вы можете просто изменить тип возвращаемого значения на void:
@Override
public void toArray(Object[] a) {
    for (int i = 0; i < a.length; i++) {
        System.out.println(a[i]);
    }
}
...