2013-02-15 63 views
0

請告知我如何轉換以下程序進入可變參數是由Java 5中引入的新功能,儀式現在我利用匿名內部數組..關於變參數和匿名陣列

public class AnnonymousArrayExample { 

    public static void main(String[] args) { 

     //calling method with anonymous array argument 
     System.out.println("first total of numbers: " + sum(new int[]{ 1, 2,3,4})); 
     System.out.println("second total of numbers: " + sum(new int[]{ 1, 2,3,4,5,6,})); 

    } 

    //method which takes an array as argument 
    public static int sum(int[] numbers){ 
     int total = 0; 
     for(int i: numbers){ 
      total = total + i; 
     } 
     return total; 
    } 
} 

回答

2

作出這樣 public static int sum(int ... numbers)

下你的方法的簽名是有效的調用

sum(); 
sum(1,2,3); 
sum(1,2,3,4,5); 
sum(new int[] {1,2,3}) 
2

使用VAR-ARGS

public static int sum(int... numbers){} 

請參見

+0

調用部分還需要做些什麼改變,請指教。 – user2045633 2013-02-15 06:42:59

+0

調用部分沒有變化 – 2013-02-15 06:43:17

+0

你可以稱它爲sum(1,2,3,4); //任何數量的參數 – 2013-02-15 06:46:28

0

使用varargs (...)改變你的方法簽名public static int sum(int... numbers)

public static int sum(int... numbers){ 
     int total = 0; 
     for(int i: numbers){ 
      total = total + i; 
     } 
     return total; 
} 

...

System.out.println("first total of numbers: " + sum(new int[]{ 1, 2,3,4})); 
System.out.println("second total of numbers: " + sum(new int[]{ 1, 2,3,4,5,6,})); 

更多關於varargs - Reference Document

0

只要改變你的參數聲明(從[]到...),並在調用部分沒有變化:

public class AnnonymousArrayExample { 

    public static void main(String[] args) { 

     // calling method with anonymous array argument 
     System.out.println("first total of numbers: " 
       + sum(new int[] { 1, 2, 3, 4 })); 
     System.out.println("second total of numbers: " 
       + sum(new int[] { 1, 2, 3, 4, 5, 6, })); 

    } 

    // method which takes an array as argument 
    public static int sum(int... numbers) { 
     int total = 0; 
     for (int i : numbers) { 
      total = total + i; 
     } 
     return total; 
    } 
} 
0

總和方法應聲明如下:

public static int sum(int ... numbers) 

和呼叫看起來應該像:

sum(1,2,3,4,5) 
1

有沒有這樣的事,作爲一個「匿名內部陣」 - 你有什麼根本就一個array creation expression

要使用可變參數數組,你只需要改變這樣的方法聲明:

public static int sum(int... numbers) { 
    // Code as before - the type of numbers will still be int[] 
} 

而且調用代碼更改爲:

System.out.println("first total of numbers: " + sum(1, 2, 3, 4)); 

瞭解更多詳情,或Java 1.5 language guidesection 8.4.1 of the Java Language Specification

+0

您最大的先生! – Shivam 2013-02-15 07:09:37

0

總和功能應該是這樣的:

public static int sum(int... numbers) { 
    int total = 0; 
    for (int i : numbers) { 
    total = total + i; 
    } 
    return total; 
} 

它看起來幾乎張玉峯,你原來的代碼 - 有很好的理由。據我所知,在內部,可變參數使用數組進行編譯。兩個函數的簽名都是相同的 - 您無法將兩者都保存在代碼中。所以「省略號」語法只是語法糖。

和函數的調用:

int total = sum(1,2,3,4); 

看起來比較清爽語法,但引擎蓋下,它是與您的原代碼 - 編譯器會創建一個數組,使用給定值初始化和將它作爲參數傳遞給函數。