Re: [問題] 參數列表 ~

看板java作者 (南洋大兜蟲)時間14年前 (2010/03/18 01:23), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《winnieboy (~砍掉重練~)》之銘言: : 各位前輩好,最近在做scjp題目時遇到一題如下 : : public class Barn : { : public static void main(String[] args) : { : new Barn.go("hi", 1); : new Barn.go("hi", "world", 2); : } : public void go(String... y, int x) : { : System.out.print(y[y.length-1] + " "); : } : } : 錯誤是在 String... y 參數列表要放最後,之前沒有學到這個東西, : google了一下參數列表,但找不到相關詳細的資料,請問有人知道這個用法嗎?? 首先有一個很大的問題是你的Barn要有括號: new Barn().go(...); 或是把go那行改成public static void go,同時main裡面要寫 Barn.go(...); 然後我介紹一下function(Object... args)是什麼東西@@ 這叫可變引數列(Variable argument lists) 你用英文查一下可以找到很多資料 有一個特性你要知道: 你只能這樣放: go(int x, String... y); 而不能這樣放: go(String... y, int x); 有看出來吧,可變引數列只能放在後面,這是規則 舉例就像是C語言中的printf()一樣,如果你想,你可以在第二個參數之後放很多個參數 在SE5以前,如果你的參數想要放許多同一型態的物件,解決這個問題方法必須用陣列 不過在SE5之後,這個長期以來被大家要求要加入的功能,終於被加入。 所以你的程式改成這樣就可以編過了 public class Test { public static void main(String[] args) { new Test().go(1,"hi"); new Test().go(2,"hi", "world"); } public void go(int x,String... y) { System.out.print(y[y.length-1] + " "); } } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.242.246
文章代碼(AID): #1BeG_-9g (java)
討論串 (同標題文章)
文章代碼(AID): #1BeG_-9g (java)