2015-04-02 82 views
1

我覺得我以錯誤的方式討論這段代碼。基本上我正在嘗試從文本文件加載客戶端信息。我麻煩的代碼看起來像這樣...Java找不到構造函數

//load clients data from file 
     file = new File(clientsOutputFile); 
     sc = new Scanner(file); 
     Client client; 
     String givenName, familyName; 
     String industry, projectName; 
     // iterate for each line in veneues file 
     while(sc.hasNextLine()) { 
      str = sc.nextLine(); 
      // split line by tab 
      parts = str.split("\t"); 
      // check if all details of client are provided 
      if(parts.length == 5) { 
       phone = Integer.parseInt(parts[0]); 
       givenName = parts[1]; 
       familyName = parts[2]; 
       industry = parts[3]; 
       projectName = parts[4]; 
       client = new Client(phone, givenName, familyName, industry, projectName); 
       // add client to client's model 
       clientMdl.addElement(client); 
      } 
     } 
     sc.close(); 

,我收到編譯時是錯誤...

Error: /Users/Desktop/Migration/BookingGUI.java:647: cannot find 
symbol 
symbol : constructor Client(int,java.lang.String,java.lang.String,java.lang.String,java.lang.String) 
location: class Client 

任何的幫助深表感謝。

+4

客戶端類的構造函數沒有與您的參數相匹配的構造函數。 – Bubletan 2015-04-02 22:59:56

+6

沒有看到'Client'的代碼,很難知道如何幫助你。想必它只是沒有那個構造函數......所以添加它,或者使用* does *存在的構造函數。 – 2015-04-02 23:00:55

回答

0

你的類應該有類型的參數

類客戶{

public Client(int phone, String givenName, String familyName, 
       String industry, String projectName) { 
} 

}

1

您需要添加一個具有參數的構造函數。 Java會默認,但我總是發現它不可靠。

+1

你認爲世界上「不可靠」是什麼意思? – chrylis 2015-04-02 23:09:37

+0

我想我應該修改它。它在學校裏被打到我頭上,總是沒有arg構造函數,因爲某些類可以查找它,並防止程序拋出InstantiationException。希望能解釋一下它! – 2015-04-02 23:32:15

+0

不是現實世界的代碼;如果一個類對協作者或配置信息有很強的依賴性,那麼不使用無參數構造函數是沒有問題的。現代的DI框架可以處理構造函數參數。 – chrylis 2015-04-03 02:24:39

1

你需要創建一個public(或數據包私人如果BookingGUI是在同一個包)的Client類接受你試圖傳遞參數的構造函數。

例如:

class Client { 
    // declare instance variables 

    public Client(String phone, String givenName, String familyName, 
        String industry, String projectName) { 
     // set instance variables 
    } 
} 
1

你可以查找,如果Client類真的有構造至極有四個參數?這必須有這樣的構造:

public class Client { 
     ///fields 
    public Client(String a, String b, String c, String d){ 
     //class initiation 
    } 
} 

此問題的另一個原因可能是Client類有這樣的構造函數private修改,所以,你不能實例化。