2016-03-10 79 views
-2

我正在寫一個代碼,需要一個整數數組,並應返回一個只有正整數的新數組。我寫了我的代碼,但我不確定如何測試它,即初始化一個數組。下面是代碼初始化一個數組 - 公共靜態int []

public static int [] getPositiveNumbers(int[] numbers) 
{ 
    int count = 0; 
    int [] result = new int[count]; 
    for(int pos = 0; pos < numbers.length; pos++) 
    { 
     if(numbers[pos] > 0) 
     { 
     result[count] = numbers[pos]; 
     count += 1; 
     } 
    } 
    return result; 
} 

}

現在我不能完全肯定,如果代碼是正確的,但我會測試它,所以我並不需要這些反饋,除非有東西在我的代碼這會影響初始化。

我需要爲此編寫一個測試類嗎?如果是這樣,我會怎麼做呢?

+1

'數= 0'所以您要創建陣列'結果[ ]大小爲零。爲什麼不添加main()函數並從main() –

+0

內調用getPositiveNumbers()方法「我需要爲此編寫測試類嗎?」 - 定義「需要」。 Java沒有像「測試類」這樣的概念,不用介意強迫你寫一個。 – immibis

+0

**第一種解決方案:**如果您想使用'int [] result = new int [count];''您必須先確定'count'的大小。編寫一個循環來計算正整數,然後分配'result'數組。你將不得不做第二個循環來傳輸正數。 **第二種解決方案:**如果您想在單個循環中執行此操作,則必須使用動態分配的數組,這是通過'ArrayList'完成的。 –

回答

0

如果需要,您可以編寫測試。測試只是爲了幫助(保護您的代碼,特別是測試業務,您還可以進行高級測試的集成測試)。所以這取決於你,按照你的需求。

對於你的函數的內容,你可以試試這個:

public static int[] getPositiveNumbers(int[] numbers) { 
     List<Integer> result = new ArrayList<>(); 
     for(int n : numbers) { 
      if (n > 0) { 
       result.add(n); 
      } 
     } 
     int[] array = new int[result.size()]; 
     for(int i = 0; i < result.size(); i++) array[i] = result.get(i); 

     return array; 
    } 

這裏測試了這種方法:

/** 
* Test of getPositiveNumbers method 
*/ 
@Test 
public void testGetPositiveNumbers() { 
    System.out.println("getPositiveNumbers"); 
    int[] numbers = {2, 3, -9, 4, -29, 50, -34, -32}; 
    int[] expResult = {2,3,4,50}; 
    int[] result = ToDelete.getPositiveNumbers(numbers); 
    assertArrayEquals(expResult, result); 
}