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

15より大きい最初の5つの値[I@4302a01f

9より大きい最初の7つの値の代わりに[12、15、18、21、23、19、17]

15より大きい最初の5つの値[18、21、23、19、17]

アップデート

わかりました、それで今私は得ています:

9より大きい最初の7つの値[0、0、0、0、0、0、17]

15より大きい最初の5つの値[0、0、0、0、17]

4

2 に答える 2

2

文字列を作成するときにこのメソッドを呼び出します。

Arrays.toString(array);

オブジェクトがStringに追加されると、その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ます。または、1回だけ新しいものを最終サイズに直接追加します。出力する内容によって異なります。

于 2012-12-14T03:20:45.787 に答える