2016-11-15 81 views
0

好吧,所以我需要找到數組的所有負數並返回它們。我找到了負數,但是如何將它們全部歸還?是的,我是初學者。返回數組中的所有負數元素

public static void main(String[] args) { 
     int [] array = {5,-1,6,3,-20,10,20,-5,2}; 
     System.out.println(findNumber(array)); 
    } 




public static int findNumber(int[] sum) { 
    int num = 0; 
    for (int i = 0; i < sum.length ; i++) { 
     if(sum[i] < num) { 
      num = sum[i]; 
     } 
    } 
    return num; 
} 
+1

作爲數組返回......創建一個新數組 –

+0

將它們放入另一個數組(或'ArrayList')並返回它? – UnholySheep

+0

然後你的方法需要返回另一個數組。閱讀ArrayList和toArray()方法。 – OldProgrammer

回答

6

基於Java 8的解決方案。您可以使用流數大於或等於過濾掉零

public static int[] findNumber(int[] sum) 
    { 
     return Arrays.stream(sum).filter(i -> i < 0).toArray(); 
    } 
3

有這樣做的多種方式,如果你只是想輸出所有的負數的輕鬆,你可以這樣做:

public static void main(String[] args) { 
    int [] array = {5,-1,6,3,-20,10,20,-5,2}; 
    ArrayList<Integer> negativeNumbers = findNumber(sum); 
    for(Integer negNum : negativeNumbers) { 
     System.out.println(negNum); 
    } 
} 

public static ArrayList<Integer> findNumber(int[] sum) { 
    ArrayList<Integer> negativeNumbers = new ArrayList<>(); 
    for (int i = 0; i < sum.length ; i++) { 
     if(sum[i] < 0) { 
      negativeNumber.add(sum[i]); 
     } 
    } 
    return negativeNumbers; 
} 
0

你的代碼正在返回元素的總和,但我明白你想要每個負數。 所以,我認爲你想要這樣的事情:

public static void main(String[] args) { 
    int [] array = {5,-1,6,3,-20,10,20,-5,2}; 
    Integer [] result = findNumbers(array); 
    for(int i : result) 
    { 
    System.out.println(i); 
    } 
} 
public static Integer[] findNumbers(int[] v) { 
    List<Integer> list = new ArrayList<>(); 
    for (int i = 0; i < v.length ; i++) { 
     if(v[i] < 0) { 
      list.add(v[i]); 
     } 
    } 
    return list.toArray(new Integer[0]); 
} 

是嗎?

此致敬禮。

1

正如你所說,你是初學者,我給代碼只使用數組。

每當遇到一個負數時,只需將其添加到數組中,然後增加它的索引號,並在檢查完所有數字後返回數組並打印出來。

public static void main(String[] args) 
{ 
    int [] array = {5,-1,6,3,-20,10,20,-5,2}; 
    int[] neg = findNumber(array); 
    for(int i = 0 ; i<neg.length; i++) 
    { 
     System.out.println(neg[i]); 
    } 
} 

public static int[] findNumber(int[] a) 
{ 
    int j=0; 
    int[] n = new int[a.length]; 
    for(int i = 0; i<a.length ; i++) 
    { 
     if(a[i] <0) 
     { 
      n[j] = a[i]; 
      j++; 
     } 
    } 

    int[] neg = new int[j]; 
    for(int k = 0 ; k < j ; k++) 
    { 
     neg[k] = n[k]; 
    } 

    return neg; 
} 

我希望它有幫助。

+0

正確,但是你的結果可能是一個沒有單個負數的向量,對嗎? – MiguelKVidal

+0

@MiguelKVidal是的。返回的數組可能是空的。通過數組。你是否想要你的意思? – SkrewEverything

+0

你可以將neg複製到aj的長度數組中,並且你不會返回數組和可能的空位。 – eldo

0

您可以修改您的方法來遍歷數組數組,並將所遇到的每個負數添加到列表中。

public static List<Integers> findNegativeNumbers(int[] num) { 
    List<Integers> negativeNumbers = new ArrayList<>(); 
    for (int i = 0; i < num.length; i++) { 
     if(num[i] < 0) { 
      negativeNumbers.add(num[i]); 
     } 
    } 
    return negativeNumbers; 
} 

然後,您可以從這種方法本身打印出負數的列表,或return返回主要打印的清單。