返回一个数组

时间:2010-09-10 20:52:00

标签: java arrays

我是编程和Java的新手,并尝试编写一个程序,它将两个数组作为输入并报告它们的总和。我想通过创建一个类来实现这一点,该类将两个数组作为构造函数输入,然后创建一个将它们添加到一起的方法,以及一个打印出这个新的sum数组的方法。

这是我的班级:

public class test1 {
    int [] a;
    int [] b;
    int [] final23;

    public test1 (int x [], int y [])
    {
        int [] a = x;
        int [] b = y;
    }

    public int [] sum(int [] x, int[] y)
    {
    int [] a = x;
    int [] b = y;
    for (int i = 0; i < Math.min(x.length, y.length); i++)
    {
        final23 [0]=x[0] + y[0] ;

    }
    return final23;
    }

    public void print()
    {
    for (int i = 0; i < final23.length; i++)
    {
        System.out.println(final23[0]);
    }
    }

}

这是我的主要课程:

public class main1 {
    public static void main(String[] args)
    {
        int l[] = {4,7,2};
        int k[] = {4,6,2};
        test1 X = new test1(k,l);

        X.sum(k,l);
        X.print();
    }
}

我通过以下方式遇到错误:

  

线程“main”中的异常java.lang.NullPointerException
    在test2.sum(test2.java:17)
    在main1.main(main1.java:8)

我想我真正想要的是我的sum方法将test1对象作为输入。但是,我不知道该怎么做。

5 个答案:

答案 0 :(得分:5)

您的变量final23永远不会被初始化。 在java中,您必须在使用之前初始化数组。你要么在宣言期间这样做(就像你用k和l做的那样),要么你必须在以后用新的arrayType[arraySize];


以下是声明/初始化数组的方法。

int[] iArray = {1, 2, 3}; //Declaration, Initialization, set values


int[] iArray; //Declaration
iArray = new int[3]; //Initialization
iArray[0] = 1; //Set value

int[] iArray; //Declaration
iArray = new Array[3]{1, 2, 3}; // Initialization and set values

你当然可以将最后两个样本放在与声明相同的行上。


试试这个(清理过的)代码:

public class test1 {
    int[] final23;

    public int[] sum(int[] x, int[] y) {
        final23 = new int[Math.min(x.length, y.length)];
        for (int i = 0; i < final23.length; i++) {
            final23[i] = x[i] + y[i];

        }
        return final23;
    }

    public void print() {
        for (int aFinal23 : final23) {
            System.out.println(aFinal23);
        }
    }


    public static void main(String[] args) {
        int l[] = {4, 7, 2};
        int k[] = {4, 6, 2};
        test1 x = new test1();

        x.sum(k, l);
        x.print();
    }
}

资源:

答案 1 :(得分:3)

我要在这里拍摄远景

 public int [] sum(int [] x, int[] y)
    {
    int [] a = x;
    int [] b = y;
    for (int i = 0; i < Math.min(x.length, y.length); i++)
    {
        final23 [0]=x[0] + y[0] ;

    }
    return final23;
    }

作为旁注,我猜你想要添加矢量的所有元素,而不仅仅是第一个。将你的for循环体改为:

 final23 [i]=x[i] + y[i] ;

最后的23?它在哪里创建?

尝试将此添加到构造函数

public test1 (int x [], int y [])
    {
        int [] a = x;
        int [] b = y;
        this.final23 = new int[Math.min(a.length, b.length)];
    }

现在定义并创建了final23,您可以在课堂上使用它。

答案 2 :(得分:1)

如果你在ctor中提供test1数组,你在sum方法中不需要它们,只需使用你已经在类中的数组:

public int [] sum()
{
  for (int i = 0; i < Math.min(x.length, y.length); i++)
  {
      final23 [i]=a[i] + b[i] ;
  }
  return final23;
}

你在sumation中也有错误,你没有使用迭代变量,你还需要在ctor中初始化final23

答案 3 :(得分:1)

在将元素放入其中之前,你必须初始化final23数组(在第17行)。

    **final23 = new int[Math.min(x.length, y.length)];**
    for (int i = 0; i < Math.min(x.length, y.length); i++)
    {
        final23 [0]=x[0] + y[0] ;

    }

答案 4 :(得分:1)