2016-02-13 75 views
0

對此很新穎。我試圖從一個單獨的類文件中調用一個構造函數方法,該文件將創建一個數組。而不是發佈我正在做的任務,我做了一個非常簡單的通用版本。在單獨的構造函數類中創建數組

我期待的是,主將調用MakeArray,它將創建一個3個整數的數組:[0,1,2]然後主將添加這些條款,唯一的輸出將是總數,2。

從我公司主營:

MakeArray trial = new MakeArray() 
System.out.println(trial[0] + trial[1] + trial[2]); 

從我的類文件:

final int CONSTANT = 3; 

public MakeArray() 
{ 
    int[] demo = new int[CONSTANT]; 
    for(int i=0; i<CONSTANT; i++) 
    { 
     demo[i]=i; 
    } 
    return demo[]; 
} 

謝謝!

+2

不能使用在構造函數中「迴歸」 – hahn

+0

,如果它不是一個數組不能使用一個對象數組。 –

回答

0

像這樣創建一個數組將不起作用,因爲數組不是普通對象而是特殊數組。 所以,你不能只製作一個與數組相同的對象,而應該創建一個靜態方法(可以調用一個沒有類的實例的方法),並使其返回一個數組,如下所示:

static final int CONSTANT = 3; 

public static int[] MakeArray() 
{ 
    int[] demo = new int[CONSTANT]; 
    for(int i=0; i<CONSTANT; i++) 
    { 
     demo[i]=i; 
    } 
    return demo; 
} 

在這種情況下,您還必須使常量變量像我所做的那樣保持靜態。 然後,你可以調用這個很像一個構造函數,你只需要添加它之前,它放置在類的名字時,你怎麼稱呼它:

int[] trial = MakeArray.MakeArray(); 

當然,這只是如果你把這個工程方法在一個名爲「MakeArray」的類中,否則你必須在點之前放置其他東西。

+0

感謝您的幫助!對我的問題有很多很好的(也是非常快的)答案。我用它作爲模型,它工作得很好! – theninja

0

您似乎不想要一個MakeArray的新實例我建議您將其作爲實用方法。

從我公司主營:

int[] trial = MakeArray.newArray(3); 

System.out.println(trial[0] + ", " + trial[1] + ", "+trial[2]); 

定義爲

enum MakeArray { ; 
    static int[] newArray(int n) { 

     int[] demo = new int[n]; 
     for (int i = 0; i < n; i++) 
      demo[i]=i; 
     return demo; 
    } 
} 
+0

謝謝你的幫助!這是我第一次使用這個網站發佈一個問題 - 偉大而快速的反饋是一個巨大的幫助! – theninja

+0

@theninja發佈問題時,如果您發佈編譯的代碼,您會獲得更高的可信度。在這種情況下這不是問題,但常見的錯誤是a)在詢問之前不要簡單地搜索解決方案,b)首先使用調試器來調試程序。 (這是什麼) –

0

您不能訪問MakeArray對象作爲一個數組utlity類。但是,您可以創建一個方法返回所述陣列

class MakeArray { 
    public static int[] makeArray() {  
     int[] demo = new int[CONSTANT]; 
     for(int i=0; i<CONSTANT; i++) { 
      demo[i]=i; 
     } 
     return demo; 
    } 
} 

然後你可以使用它像:

int[] trial = MakeArray.makeArray(); 
System.out.println(trial[0] + trial[1] + trial[2]); 
+0

感謝您的幫助! – theninja

0

一種方式來做到這一點是在你的類和它添加一個實例變量相應的getter方法:

final int CONSTANT = 3; 
int[] demo; 

public MakeArray() 
{ 
    demo = new int[CONSTANT]; 
    for(int i=0; i<CONSTANT; i++) 
    { 
     demo[i]=i; 
    } 
} 

public getArray(){ 
    return demo; 
} 

現在你可以從main撥打:

MakeArray arr = new MakeArray(); 
int[] trial = arr.getArray(); 
System.out.println(trial[0] + trial[1] + trial[2]); 
0

據我瞭解你的問題,你可能會想要這樣的東西。

類文件:

final int CONSTANT = 3; 

public class MakeArray 
{ 
    public int[] demo; 

    public MakeArray() 
    { 
     demo = new int[CONSTANT]; 
     for(int i=0; i<CONSTANT; i++) 
     { 
      demo[i]=i; 
     } 
    } 
} 

主類:

MakeArray trial = new MakeArray() 
System.out.println(trial.demo[0] + trial.demo[1] + trial.demo[2]); 
相關問題