2013-04-29 179 views
-1

嗨我是新來的java和我一直試圖傳遞一個int形式的主要方法到另一個類的構造函數,但有一些錯誤發生。我不明白我做錯了什麼。java構造函數錯誤(不能通過int到構造函數)

類的主要方法:

import java.util.Scanner; 

public class _01 { 


    public static void main(String[] args) { 
     Scanner input = new Scanner(System.in); 
     System.out.print("Enter your : "); 
     String name = input.nextLine(); 
     int size = name.length(); 

     //System.out.println(size); 


     _02 process = new _02(size); 

    } 

} 

類具有構造函數:

public class _02 { 

    int maxsize; 
    int top; 
    String arrayStack[]; 

    public void _02(int size) { 

     maxsize = size; 
     arrayStack = new String[maxsize]; 
     top = -1; 
    } 

    public void push(String... letters) { 

     arrayStack[++top] = letters; 

    } 

    public String pop() { 

     return arrayStack[top--]; 


    } 
} 

錯誤消息我得到:

Exception in thread "main" java.lang.Error: Unresolved compilation problem: The constructor _02(int) is undefined

at _01.main(_01.java:16)

+0

而且看起來大家今天都在...... ;-) 4個答案和一分鐘內的評論。 – rolfl 2013-04-29 13:46:09

回答

1

那是因爲你正在使用void的 '無效'。 Java認爲那些是方法,而不是構造函數。首先停止給你的課上可怕的名字。然後這樣做:

public class Whatever { 
    private Integer size; 
    public Whatever(Integer size) { 
     this.size = size; 
     System.out.println("I am a constructor"); 
    }; 
}; 

public class Article { 
    private String title; 
    private String content; 
    private String author; 
    private DateTime publishDate; 

    public Article(String title, String content, String author, DateTime publishDate) { 
     this.title = title; 
     this.content = content; 
     this.author = author; 
     this.publishDate = publishDate; 
    }; 

}; 

假設我們在報紙上的項目合作。如果我讀了你的代碼並看到_01,那對我來說沒有任何意義。如果相反,我看到Article,與title,content等,我可以立即明白你寫了什麼,並隨心所欲地使用它。

如果您在兩週後回到自己的代碼,您將不會知道您的意思是_01。儘可能多的開發人員,你不會記得。甚至有人開玩笑說,通過評論完成。它是這樣的:

/** 
* At the time of this writing, only God and I knew what I was doing. 
* Now, only God knows. 
*/

Remeber,代碼很容易寫,但非常難讀。

+0

謝謝你!我必須以這種方式命名課程,因爲我的老師希望我們遵循相同的格式:/ – 2013-04-29 13:48:08

+0

你能舉個例子嗎? – 2013-04-29 13:51:29

+0

非常感謝。你真的很有幫助。 – 2013-04-29 13:59:12

0

構造函數沒有返回類型。如果您想將其用作構造函數,請從public void _02(int size)中刪除void

你的類的命名是有點奇怪,但...

0

拆除公共無效_02(INT大小){...}

1

構造函數是沒有返回類型的方法,讓你的構造函數聲明應該是:

public _02(int size) 

一個很好的做法將是使用遵循Java的風格指南,使用名稱以大寫letrer作爲類名稱,示例Two