2016-02-13 95 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]); 
相关问题