2017-07-28 51 views
-1

我試圖在我的構造函數中使用可變長度的參數,但是我得到的錯誤信息:不相容的類型錯誤

  1. 「不兼容類型的字符串不能轉換成int」

  2. 非法開始操作,';'預期

    public class Personnel { 
    
    private String pname; 
    private String rank; 
    private String certs []; 
    
    public static int totalPersonnel = 0; 
    
    public Personnel(String name, String rank, String... certs) { 
    
        this.pname = name; 
        this.rank = rank; 
        this.certs = certs; 
    
        incrPersonnel(); 
    
    } 
    
    public static void incrPersonnel(){ 
        totalPersonnel++; 
    } 
    
    public static void main(String myArgs[]){ 
        Personnel Alex = new Personnel ("Alex", "CPT", ["none"]); 
    

    }

    }

+1

這是什麼語法:'[「none」]' – Ramanlfc

+0

刪除'[「none」]的括號' – Lino

+0

我曾經指出它是一個空的佔位符。謝謝,我現在看到了這個問題,非常疏忽! – czolbe

回答

3

如果試圖傳遞一個數組,那麼你正在使用的不是,而不是糾正你使用new String[]{"none"}的方式,讓你的代碼看起來應該像這樣的:

public static void main(String myArgs[]) { 
    Personnel Alex = new Personnel("Alex", "CPT", new String[]{"none"}); 
} 

或者你也可以使用:

public static void main(String myArgs[]) { 
    Personnel Alex = new Personnel("Alex", "CPT", "val1", "val2", "val3"); 
    //--------------------------------------------[_____________________] 
} 

但在你的情況傳遞只有一個值,這樣你就不必使用new String[]{..},你只需要通過這樣的:

Personnel Alex = new Personnel("Alex", "CPT", "none"); 

如果你不希望傳遞任何值,那麼你就需要指定它你可以像傳遞的第一和第二個值:

Personnel Alex = new Personnel("Alex", "CPT"); 
//------------------------------------------^____no need to pass 

它將返回empty爲陣

+0

或只是字符串,因爲它是可變參數 – Lino

+0

是@Lino這是正確的,你可以檢查我的答案 –

+0

感謝您的全面解釋,我很感激。當我發佈我的問題時,我很不理解變長參數的用法。 – czolbe