2017-10-21 119 views
-1
int[] arr = new int[5]; 
    arr[0] = 23; 
    arr[1] = 123; 
    arr[2] = 255; 

    printArray(arr); 
} 

static void printArray(int...arr) { 
    for (int T : arr) 
     System.out.println(T); 
} 

打印此:如何使我未填充的int數組不打印出0?

23 
123 
255 
0 
0 

那麼如何避免不打印未填充的元素嗎?

+3

那些位置不空缺 - 它們含有'0' 。 –

+0

'int [] arr = new int [3];'? –

回答

1

Java中的原語不能爲空。當你創建一個原始整數並且不給它賦值時,it will default to 0

可以使Integer秒的數組,可爲空,然後使用if,看看他們是否是空的,像這樣:

public static void main(String[] args) { 
    Integer[] arr = new Integer[5]; 
    arr[0] = 23; 
    arr[1] = 123; 
    arr[2] = 255; 

    printArray(arr); 
} 

public static void printArray(Integer... arr){ 
    for(Integer t : arr) { 
     if (t != null) { 
      System.out.println(t); 
     } 
    } 
} 
+1

請注意,使用'Integer'而不是'int'是一個巨大的性能缺陷。但是,沒有其他方法可以判斷是否設置了值。除了可以選擇在應用程序中不能出現的特殊值之外。例如'-1'左右。然後可以用'-1'而不是'0'來初始化數組,例如'Arrays.fill(array,-1);'並且用'int'來保存。 – Zabuza

+1

@Zabuza很好指出,但我想知道什麼規模會變得明顯。如果'Arrays.fill()'的操作會放棄使用盒裝原語的開銷。 – Ivar

+0

是的。使用'0'作爲'int []'的魔術值*可能會更好,如果應用中的'0'有效,則將其作爲'-1'(*魔法值*)不能發生)在數組中。通過這種方式,您可以使用另一個*指標值*有效地使用默認初始值'0'。需要一個「get」和「set」訪問的方法包裝器,但對於大數據來說,這可能會變得有利。 – Zabuza