2012-12-14 47 views
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

代替超過9 [12,15更大的第一個7個值,18,21,23,19,17]

第一5個值大於15 18,21,23,19,17]

UPDATE

確定,所以現在我得到:大於9

第一7個值[0,0,0,0,0,0,17]超過15 [0更大

第一5個值, 0,0,0,17]

+0

每次找到元素時,都不能將'newNumArray'設置爲'new int []';你必須事先知道數組的長度。 – irrelephant

回答

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。或者只是將它直接新增到最終尺寸..取決於您想要輸出的內容。

+0

好吧,這有效,但我有一個相關的問題,檢查我的更新在OP –

+0

我知道了,我把'newNumArray = new int [count]'移到for循環前方法的最頂端,它工作。謝謝! –

2

你想調用此方法構建字符串時:

Arrays.toString(array); 

當一個對象被添加到一個字符串,其toString()方法被調用。
可悲的是,數組,這個打印你所看到的垃圾(這不是真正的垃圾,但它是關於有用)

你的代碼改成這樣:

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

這就是我的,不是嗎?當我把'Arrays.toString(four)' –

+0

看到已編輯的答案 – Bohemian

+0

好的,這有效,但我有一個相關的問題,檢查我的更新在OP –