2017-03-22 13 views
2

私の研究室ではint[]の引数をとり、その配列の正の数だけの新しい配列を返す、getPositiveNumbersという静的関数を書く必要があります。私はまず、配列内にいくつの正の数があるのか​​を数え、次にそのサイズの新しい配列を作成する必要があることを知っています。私はどのように新しい配列に正の数だけを埋めていくべきか、私は不思議に思っています。私は本当にJavaを学ぼうとしているので、どんな助けも高く評価されます。以下は私が現在書いているものです。ありがとう!配列をとり、正の数だけを返す関数を書く

public class Example1 { 

    public static int[] getPositiveNumbes(int[] numbers) 
    { 
     int total = 0; 
     for (int i = 0; i < numbers.length; i +=1) 
     { 
      if (numbers[i] > 0) 
      { 
       total += 1; 
      } 
     } 
     int[] nums = new int[total]; 
     for (int i = 0; i< numbers.length; i+= 1) 
     { 
      if (numbers[i] > 0) 
      { 
       for(int j = 0; j<total; j+=1) 
       { 
        nums[j] = numbers[i]; 
       } 
      } 
     } 
     return nums; 
    } 
} 
+6

'Arrays.streamを返す(数字).filter(I - > I> 0).toArray();' – shmosel

+0

はhttps://www.sitepoint.com/java-8-streams-filter-を参照してください。 map-reduce/ –

+0

@shmoselはおそらくJava 8が必要であると言及しています。 – nerdlyist

答えて

4

forは必要ありません。 num配列に最後に書き込まれた場所を追跡するためにインデックスjを使用してください。

public class Example1 { 

public static int[] getPositiveNumbes(int[] numbers) 
{ 
    int total = 0; 
    for (int i = 0; i < numbers.length; i +=1) 
    { 
     if (numbers[i] > 0) 
     { 
      total += 1; 
     } 
    } 
    int[] nums = new int[total]; 
    int j = 0; 
    for (int i = 0; i < numbers.length; i+= 1) 
    { 
     if (numbers[i] > 0) 
     { 
      num[j] = number[i]; 
      j++; 
     } 
    } 
    return nums; 
} 
関連する問題