here’s the code:
import java.lang.System;
import java.lang.Math;
public class ArrayFunHouseTwo
{
public static int[] getCountValuesBiggerThanX(int[] numArray, int count, int x)
{
int[] newNumArray = new int[0];
//int num = 0;
int cnt = 0;
int z = 0;
for(int y = 0; y < numArray.length; y++){
if(numArray[y] > x && z < count){
newNumArray = new int[count];
newNumArray[z] = numArray[y];
z++;
}
}
//}
return newNumArray;
}
}
and it’s associated runner class:
import java.util.Arrays;
public class Lab14b
{
public static void main( String args[] )
{
int[] one = {1,2,3,4,5,6,7,8,9,10};
int[] two = {1,2,3,9,11,20,30};
//add more test cases
int[] three = {9,8,7,6,5,4,3,2,0,-2};
int[] four = {3,6,9,12,15,18,21,23,19,17,15,13,11,10,9,6,3,2,1,0};
System.out.println(Arrays.toString(four));
System.out.println("first 7 values greater than 9 " + ArrayFunHouseTwo.getCountValuesBiggerThanX(four, 7, 9));
System.out.println("first 5 values greater than 15 " + ArrayFunHouseTwo.getCountValuesBiggerThanX(four, 5, 15));
}
}
and as I said above, it’s outputting the location, I think that’s what it is, instead of the array itself.
i.e. I’m getting: first 7 values greater than 9 [I@38f0b51d
first 5 values greater than 15 [I@4302a01f
instead of first 7 values greater than 9 [12, 15, 18, 21, 23, 19, 17]
first 5 values greater than 15 [18, 21, 23, 19, 17]
UPDATE
ok, so now I’m getting:
first 7 values greater than 9 [0, 0, 0, 0, 0, 0, 17]
first 5 values greater than 15 [0, 0, 0, 0, 17]
Convert the return value of your function to a string with
Arrays.toStringAs to your new problem, you dont want to do
newNumArray = new int[count];so deep in the loop, its getting overwritten every time.My java is rusty, but perhaps you can set
newNumArraytonullinstead, in the first line, and only recreate it inside the loop if it isnull. Or just new it once directly to the final size.. depends on what you want to output.