Метод класса с аргументами, который возвращает массив - PullRequest
3 голосов
/ 18 февраля 2010

Я довольно новичок в Java, а не из опыта программирования. Я делаю курс и застрял на части, я надеюсь, что это уместно, чтобы задать вопрос здесь). Вопрос состоит в том, чтобы создать метод, который принимает массив целых чисел как аргумент и возвращает отсортированный набор, содержащий элементы этого массива. Я не включаю код, потому что не хочу ответа, но мне нужна подсказка. Это сводит меня с ума!

Ваш в ожидании

JC

Ответы [ 6 ]

5 голосов
/ 18 февраля 2010

Хорошо, давайте пройдемся вместе.Следуй за мной:

В вопросе предлагается создать метод, который принимает массив целых чисел в качестве аргумента и возвращает отсортированный набор, содержащий элементы этого массива.У нас есть три шага:

  1. нам нужно выяснить, как передать массив в функцию
  2. нам нужно выяснить, как сортировать элементы
  3. мынужно выяснить, как вернуть массив (из отсортированных элементов)

Что я здесь делаю, так это взятие основной проблемы и разделение ее на более мелкие, более доступные подзадачи.Это называется разделяй и властвуй .Вы столкнетесь с таким подходом очень часто, если будете заниматься карьерой программиста.

  1. передать массив в функцию: написать простую программу, которая подготавливает массив, передает его функции и заставляет функцию распечатать его.Что-то вроде (в моей только что созданной версии псевдокода):
main() {     
    a[] = { "one", "two", "three"};
    f(a);
}

f(arr[]) {
    for ( int i = 0 ; i < arr.length ; i++ ) 
        print(arr[i]);
}

Ты со мной так далеко?Я надеюсь на это.

Теперь

сортировка элементов: я почти уверен, что у вас уже есть способ сделать это в вашем учебнике или в ваших заметках.Помните, что вы должны отсортировать массив.Теперь наша функция f() будет выглядеть примерно так:
f(arr[]) {
     /* insert here your sorting method */
}

Как только это будет сделано, вам нужно вернуть этот массив в основную функцию.Теперь, если бы вы передали одно значение из функции, вы бы сделали что-то вроде:

int g() {
    int i = 0;
    i++;
    return i;
}

, так как они хотят, чтобы вы возвращали массив, это было бы что-то вроде:

int[] h() {
    /* initialize the array */
    int[] j = { 1, 2, 3 };
    /* your code goes here */
    return j;
}

На данный момент у вас есть все элементы, необходимые для вопроса, который вам задавали.Просто заставьте их работать в java сначала , а затем соедините все вместе.

Добро пожаловать в волшебный мир программирования:)

1 голос
/ 18 февраля 2010
import org.junit.Test;

import java.util.Arrays;
import java.util.SortedSet;
import java.util.TreeSet;

import static org.hamcrest.CoreMatchers.instanceOf;
import static org.hamcrest.Matchers.greaterThan;
import static org.hamcrest.core.Is.is;
import static org.junit.Assert.assertThat;

/**
 * @version $Id$
 */
public class MainTest {

    public SortedSet sortIntegers(Integer[] ints) {
        return new TreeSet(Arrays.asList(ints));
    }

    @Test
    public void it_should_return_a_sorted_set() throws Exception {
        assertThat(sortIntegers(new Integer[]{5, 7, 1, 6}), is(instanceOf(SortedSet.class)));
    }

    @Test
    public void it_should_return_four_elements() throws Exception {
        assertThat(sortIntegers(new Integer[]{5, 7, 1, 6}).size(), is(4));
    }

    @Test
    public void it_should_return_in_the_right_order() throws Exception {
        Integer previous = 0;

        for (Integer current : sortIntegers(new Integer[]{5, 7, 1, 6})) {
            assertThat(current , is(greaterThan(previous)));
            previous = current;
        }        
    }

}
1 голос
/ 18 февраля 2010

Советы:

  1. Как создать элемент, который принимает int в качестве аргумента?
  2. Как вы объявляете массив типа int?
  3. Собери их вместе.

Для SortedSet:

  1. Преобразовать массив в List. Подсказка: ищите asList() метод
  2. Добавьте все элементы получившегося List к SortedSet. Подсказка: addAll().

РЕДАКТИРОВАТЬ: Aaargh! Не видел SortedSet в вопросе

0 голосов
/ 18 февраля 2010

Есть несколько моментов, которые вы должны запомнить:

SortedSet - это интерфейс, поэтому вы должны найти подходящую реализацию (подсказка: API содержит «Все известные классы реализации»)

"int" - это нативные типы данных, без объектов. Поэтому вам нужно заключить их в оболочки (см. Integer.valueOf () ), прежде чем вы сможете использовать их в наборе.

Остальное должно быть простой итерацией по исходному массиву и помещением каждого элемента в новый Set.

НТН

0 голосов
/ 18 февраля 2010

Вы можете создать новый массив и выполнять итерации по заданному массиву, пока в вашем массиве еще есть целые числа.Вы можете найти самое высокое или самое низкое целое и поместить его в новый массив и удалить его из заданного массива.Вы можете сделать это, пока есть элементы в данном массиве.Если указанный массив пуст, вернуть новый массив.

Я думал, что это то, что вы имели в виду.


Я не правильно прочитал, извините.создайте новый SortedSet, смотрите здесь для получения дополнительной информации: SortedSet , и используйте add или addAll для добавления элементов в этот sortedSet.См. Для получения дополнительной информации о Set

0 голосов
/ 18 февраля 2010

В сети множество учебников, посмотрите этот пример , это не совсем то, что вам нужно, но может указать вам верное направление.

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...