带有返回数组的参数的类方法

时间:2010-02-18 09:19:27

标签: java

我对Java很新,而不是编程背景。我正在做一个课程,我被困在一块片上,我希望在这里提出一个问题是合适的。这个问题要求创建一个方法,该方法将一个整数数组作为一个参数,并返回一个包含该数组元素的有序集。我不包括代码,因为我不想要答案,但我想知道一个线索。这让我疯了!

你的期待

JC

6 个答案:

答案 0 :(得分:5)

好的,让我们一起来看看。跟我来:

  

问题是要创建一个方法   将整数数组作为一个整数   argumetn并返回一个有序集   包含那些元素   阵列。

我们在这里有三个步骤:

  1. 我们需要弄清楚如何将数组传递给函数
  2. 我们需要弄清楚如何对元素进行排序
  3. 我们需要弄清楚如何返回一个数组(排序元素)
  4. 我在这里做的是把主要问题分成更小,更平易近人的子问题。它被称为 divide et impera 。如果你追求编程生涯,你会经常遇到这种方法。

    1. 将一个数组传递给一个函数:编写一个简单的程序来准备一个数组,将它传递给一个函数并让函数打印它。像(在我自己刚刚编写的伪代码版本中):
    2. main() {     
          a[] = { "one", "two", "three"};
          f(a);
      }
      
      f(arr[]) {
          for ( int i = 0 ; i < arr.length ; i++ ) 
              print(arr[i]);
      }
      

      你和我在一起吗?我希望如此。

      现在,

      1. 元素的分类:我很确定你已经有了在教科书或笔记中做到这一点的方法。记住你必须对数组进行排序。现在我们的函数f()看起来像:
      2. 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 :(得分:1)

提示:

  1. 如何创建一个以int作为参数的元素?
  2. 如何声明int类型的数组?
  3. 把它们放在一起。
  4. 对于SortedSet

    1. 将数组转换为List。提示:寻找asList()方法
    2. 将生成的List的所有元素添加到SortedSet。提示:addAll()
    3. 编辑: Aaargh!没有在问题中看到SortedSet

答案 2 :(得分:1)

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;
        }        
    }

}

答案 3 :(得分:0)

网上有很多教程,请查看example,这不完全是你想要的,但可能会指向正确的方向。

祝你好运!

答案 4 :(得分:0)

只要数组中仍存在整数,您就可以创建一个新数组并迭代给定的数组。您可以搜索最高或最低的int并将其放入新数组中,并将其从给定数组中删除。只要给定数组中有项目,您就可以执行此操作。如果给定数组为空,则返回新数组。

我认为这就是你的意思。


我没有正确阅读,抱歉。

您可以创建新的SortedSet,有关详细信息,请参阅此处:SortedSet, 并使用add或addAll将项添加到此sortedSet。有关Set

的更多信息,请参阅

答案 5 :(得分:0)

你应该记住一些要点:

SortedSet是一个接口,因此您必须找到合适的实现(提示:API包含“所有已知的实现类”)

“int”是本机数据类型,没有对象。因此,您需要将它们封装在包装器中(请参阅Integer.valueOf()),然后才能在Set中使用它们。

其余的应该是对源数组的简单迭代,并将每个元素放到新的Set中。

HTH