2010-02-18 71 views
3

我對Java很新穎,而不是從編程背景。我正在做一個課程,並被困在一塊,我希望這是適合在這裏問一個問題)。該問題要求創建一個將整數數組作爲argumetn並返回包含該數組元素的有序集的方法。我不包括代碼,因爲我不想要答案,但我想要一個線索。這讓我瘋狂!帶有返回數組參數的類方法

此致在期待

JC

+0

我從來沒有通過StackOverflow或任何其他網站將成爲一個「做我的作業」類網站。因此,我將這個問題標記爲要求版主注意。 – Riduidel

+1

這不是一個「爲我做作業」的問題。他/她要求提供一個提示,而不是回答。 – Hardcoded

+1

我覺得這很有趣。從答案來看,這個問題並沒有被認爲是挑釁......這不是火箭科學,但在高級問題中質量並不總是更高。 –

回答

0

有很多在網上的教程,看看這個example,它不正是你想要的,但可能你指出正確的方向。

祝你好運!

0

您可以創建一個新的數組,只要數組中仍有整數,就可以遍歷給定的數組。您可以搜索最高或最低的int並將其放入新數組中,並將其從給定數組中移除。只要給定數組中有項目,就可以這樣做。如果給定數組爲空,則返回新數組。

我以爲這就是你的意思。


我沒看完,抱歉。

您可以創建一個新的SortedSet,在這裏看到的更多信息:SortedSet, 和使用添加或addAll將項目添加到這個SortedSet的。更多信息請參見有關Set

+0

除了要求返回一個SortedSet而不是一個數組的問題;) – Paolo

+0

@Paolo你在哪裏是對的。我沒有正確閱讀,對不起。我添加了一些關於SortedSets和Set的鏈接。 – JordyOnrust

1

提示:

  1. 如何創建,它接受一個int作爲參數的元素?
  2. 如何聲明int類型的數組?
  3. 把這些放在一起。

對於SortedSet

  1. 陣列轉換爲List。提示:查找asList()方法
  2. 將生成的List的所有元素添加到SortedSet。提示:addAll()

編輯: Aaargh!沒有在問題中看到SortedSet

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

} 
+1

沒有泛型? ;-) –

+0

我知道這聽起來像是一個藉口,但是......很奇怪!在從Idea創建文本到這裏的文本框之前,我已經使用了泛型。 :) :) :) – gicappa

+0

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

5

好的,讓我們一起來看看。跟我來:

的問題問到創建方法 是採用整數數組作爲 argumetn並返回一個有序集合 包含該 數組的元素。

我們這裏有三個步驟:

  1. 我們需要弄清楚如何將數組傳遞給函數
  2. 我們需要弄清楚如何元素
  3. 我們需要數字排序如何返回一個數組(排序元素)

我在這裏做的是把主要問題,並將其分爲更小,更容易接近的子-問題。它被稱爲divide et impera。如果你從事編程生涯,你會經常遇到這種方法。

  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 的第一個工作,然後把所有東西放在一起。

    歡迎來到魔幻世界編程:)的

    +0

    哇感謝一百萬。不過我認爲寫下這個問題真的有幫助,我自己像一個正常的成年人一樣解決它!真的很感激你的conributions - JC – jcPaddy

    +0

    有人說「解釋問題是解決方案的一半」。我認爲它也適用於此:) – lorenzog

    0

    有一些點,你應該記住:

    SortedSet的是一個接口,所以你必須找到一個合適的實現(提示:API包含「所有已知實現類「)

    」int「是本地數據類型,沒有對象。因此,您需要將它們封裝在包裝中(請參閱Integer.valueOf()),然後才能在Set中使用它們。

    其餘的應該是對源數組的簡單迭代,並將每個元素放到新的Set中。

    HTH