Java 在单独的构造函数类中创建数组

Java 在单独的构造函数类中创建数组,java,arrays,class,constructor,Java,Arrays,Class,Constructor,这是很新的。我试图从一个单独的类文件中调用一个构造函数方法,该类文件将生成一个数组。我没有把我正在做的工作发布到作业上,而是做了一个更简单的通用版本 我所期望的是main将调用MakeArray,它将创建一个包含3个整数的数组:[0,1,2],然后main将添加这些项,唯一的输出将是总数,2 从我的主要观点: MakeArray trial = new MakeArray() System.out.println(trial[0] + trial[1] + trial[2]); int

这是很新的。我试图从一个单独的类文件中调用一个构造函数方法,该类文件将生成一个数组。我没有把我正在做的工作发布到作业上,而是做了一个更简单的通用版本

我所期望的是main将调用MakeArray,它将创建一个包含3个整数的数组:[0,1,2],然后main将添加这些项,唯一的输出将是总数,2

从我的主要观点:

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

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[];   
}
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;
        }   
    }
}
final int常量=3;
公共MakeArray()
{
int[]demo=新的int[常数];

对于(int i=0;i您似乎不需要
MakeArray
的新实例,我建议您将其作为一种实用方法

从我的主要观点:

MakeArray trial = new MakeArray()   
System.out.println(trial[0] + trial[1] + trial[2]); 
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;
    }
}
enum MakeArray{;
静态int[]新数组(int n){
int[]demo=新的int[n];
对于(int i=0;i
您不能以数组的形式访问MakeArray对象。但是,您可以创建一个返回所述数组的方法:

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

一种方法是在类中添加实例变量及其相应的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;
}

创建这样的数组是行不通的,因为数组不是普通对象,而是特殊对象。 因此,您不能只创建一个与数组工作相同的对象,而是创建一个静态方法(可以在没有类实例的情况下调用该方法)并使其返回数组,如下所示:

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;   
}

当然,只有将此方法放入名为“MakeArray”的类中时,此方法才有效。否则,您必须在点前面放置其他内容。

据我所知,您可能需要这样的内容

类文件:

final int CONSTANT = 3;

public MakeArray() 
{
    int[] demo = new int[CONSTANT];
    for(int i=0; i<CONSTANT; i++)
    {
        demo[i]=i;
    }
    return demo[];   
}
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;
        }   
    }
}

您不能在构造函数中使用“return”如果对象不是数组,则不能将其用作数组。谢谢您的帮助!非常好(而且非常快)回答我的问题。我用这个作为模型,效果很好!谢谢彼得的帮助!这是我第一次通过发布问题来使用这个网站-伟大而快速的反馈是一个巨大的帮助!@theninja在发布问题时,如果你发布编译的代码,你会得到更高的可信度。在这种情况下,这不是问题,而是一个常见的错误采取的方法是:a)在询问之前不要简单地搜索解决方案;b)首先使用调试器调试程序。(这就是它的用途)谢谢您的帮助!