2015-04-12 83 views
-2

我在博士Java中收到一條錯誤消息,表示我的構造函數未定義爲String,int,int,儘管我的構造函數具有這些參數(以相同順序),並且所有內容都是大小寫匹配的。這也不是一個課程像另一個線程建議的那樣過時的問題。爲什麼Java說我的構造函數是未定義的,即使它是?

這裏是我的「商城」類構造函數接受一個字符串,一個int和一個int

public class Mall{ 
    //declare variables 
    private String name;//name of the mall 
    private int length; //length of the mall = # of columns of stores array 
    private int width; //width of the mall = # of rows of stores array 


    public void Mall(String name, int length, int width){ 
    //this is the constructor I want to use 
    this.name=name; 
    this.length=length; 
    this.width=width; 
    } 
} 

,這裏是我的主要方法

public class Test1{ 
public static void main(String[] args){ 
    Mall m = new Mall("nameOfMall", 3, 3); //here is where the error happens 
} 
} 

我試圖創建一個構造函數沒有參數,然後在我的對象創建語句中傳遞沒有參數,雖然這不會導致任何編譯錯誤,但它不會將它設置爲適當的值。此外,我可以調用Mall類中的其他方法,這使得我相信這是創建語句的問題,而不是Mall類中的任何問題。我有權這樣想嗎?什麼導致了錯誤?

+8

我沒有看到任何構造函數。 (提示:'void'。投票結束爲拼寫錯誤。) –

+3

void這個詞讓Java將以下內容理解爲方法,而不是構造函數。構造函數根本沒有返回類型。 – RealSkeptic

+0

我不知道,謝謝! – JessStormBorn

回答

4

你有一個方法,而不是一個構造函數。一個構造函數沒有void

這是一個方法:

public void Mall(String name, int length, int width){ 
    this.length=length; 
    this.width=width; 
} 

這是一個構造函數:

public Mall(String name, int length, int width) 
{ 
    this.length = length; 
    this.width = width; 
} 
2

從構造函數中刪除返回類型void

構造上更詳細的信息是:Here

+1

這個鏈接是*不*給JLS。 – hexafraction

+0

我做了更正。 – Nirmal

0

刪除void

Mall(String name, int length, int width){ 
    //this is the constructor I want to use 
    this.name=name; 
    this.length=length; 
    this.width=width; 
    } 
相關問題