Write a program that return a new array that contains all values greater than the first value in the array in java

Faheem :

Write a program that returns a new array that contains all values greater than the first value in the array. If there are no values in the array greater than the first value, return an empty array. If the array is empty, return an empty array.

I solve this question like this:

public class RayGetFirst
{
    //method go will return an array
    //containing all values > the first value in the array
    //from the array parameter ray
    public static int[] go(int[] ray)
    {
        int first = ray[0];
    int[] result = new int[];
    for( int i = 1; i<ray.length; i++)
    {
      if(first < ray)
      {
        return result;
      }
    }
     return result;
  }
}

First, I separate the first index of the array and then started the for-loop for 1 index not from zero and after I compare the first array with the rest of the array. But I did not end with the correct answer. Can anyone correct this with the same logic that I am using?

The Runner for this program:

import java.util.*;
class Main 
{
  public static void main(String[] args)
  {
    RayGetFirst rt = new RayGetFirst();
    System.out.println( rt.go( new int[]{-99,1,2,3,4,5,6,7,8,9,10,5} ) );
        System.out.println( rt.go( new int[]{10,9,8,7,6,5,4,3,2,1,-99} ) );
        System.out.println( rt.go( new int[]{10,20,30,40,50,-11818,40,30,20,10} ) );
        System.out.println( rt.go( new int[]{32767} ) );
        System.out.println( rt.go( new int[]{255,255} ) );
        System.out.println( rt.go( new int[]{9,10,-88,100,-555,2} ) );
        System.out.println( rt.go( new int[]{10,10,10,11,456} ) );
        System.out.println( rt.go( new int[]{-111,1,2,3,9,11,20,1} ) );
        System.out.println( rt.go( new int[]{9,8,7,6,5,4,3,2,0,-2,6} ) );
        System.out.println( rt.go( new int[]{12,15,18,21,23,1000} ) );
        System.out.println( rt.go( new int[]{250,19,17,15,13,11,10,9,6,3,2,1,0} ) );    
        System.out.println( rt.go( new int[]{9,10,-8,10000,-5000,-3000} ) );
  }
} 

The correct answers with this runner:

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 5]
[]
[20, 30, 40, 50, 40, 30, 20]
[]
[]
[10, 100]
[11, 456]
[1, 2, 3, 9, 11, 20, 1]
[]
[15, 18, 21, 23, 1000]
[]
[10, 10000]

Thankyou

WJS :

You need to return an array filled with values > than the first of the supplied array.

public class RayGetFirst {
    //method go will return an array
    //containing all values > the first value in the array
    //from the array parameter ray
    public static int[] go(int[] ray) {
        int first = ray[0];
        int k = 0;                           // set an index
        int[] result = new int[ray.length];  // allocate storage for values.
        for( int i = 1; i<ray.length; i++) {
           if(first < ray[i]) {
              result[k++] = ray[i];     // copy values
           }
        }

    // now establish a new array of length k
        int [] ret = new int[k];
    // and copy the first `k` values in `result` to that array.
    // Then return that array.
        for (int i = 0; i < k; i++) {
            ret[i] = result[i];
        }

        return ret;
    }
}

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=358867&siteId=1