0

这是代码:

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;
}
}

它是相关的跑步者类:

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));
}
}

正如我上面所说,它正在输出位置,我认为就是这样,而不是数组本身。

即我得到:前 7 个值大于 9 [I@38f0b51d

前 5 个大于 15 的值 [I@4302a01f

而不是前 7 个值大于 9 [12, 15, 18, 21, 23, 19, 17]

前 5 个值大于 15 [18, 21, 23, 19, 17]

更新

好的,所以现在我得到:

前 7 个值大于 9 [0, 0, 0, 0, 0, 0, 17]

前 5 个大于 15 的值 [0, 0, 0, 0, 17]

4

2 回答 2

2

您想在构建字符串时调用此方法:

Arrays.toString(array);

当一个对象被添加到一个字符串时,它的 toString() 方法被调用。
可悲的是,对于数组,这会打印您所看到的垃圾(它实际上不是垃圾,但它几乎同样有用)

将您的代码更改为:

System.out.println("first 5 values greater than 15  " +    
    Arrays.toString(ArrayFunHouseTwo.getCountValuesBiggerThanX(four, 5, 15)));
于 2012-12-14T03:18:49.953 回答
2

将函数的返回值转换为字符串Arrays.toString

 System.out.println("first 7 values greater than 9  " +    Arrays.toString(ArrayFunHouseTwo.getCountValuesBiggerThanX(four, 7, 9)));
    System.out.println("first 5 values greater than 15  " +    Arrays.toString(ArrayFunHouseTwo.getCountValuesBiggerThanX(four, 5, 15)));

至于你的新问题,你不想newNumArray = new int[count];在循环中做这么深,它每次都会被覆盖。

我的 java 生锈了,但也许你可以在第一行设置newNumArraynull,如果它是,则只在循环内重新创建它null。或者只是将其直接更新为最终大小..取决于您要输出的内容。

于 2012-12-14T03:20:45.787 回答