构建二维数组并分配

时间:2012-10-27 04:06:01

标签: java arrays 2d

package homework3;

public class DoubleMatrix
{

   private double[][] doubMatrix;

   public DoubleMatrix (int row, int col)
   {
    if(row > 0 & col > 0)
    {
        makeDoubMatrix(1,1);
    }
    else
    {
        row = 1;
        col = 1;
    }

}
public DoubleMatrix(double[][] tempArray)
{   
    int k = tempArray.length;
    if(tempArray != null)
    {


        for(int i = 0; i < tempArray.length;i++)
        {
            if(k== tempArray[i].length)
            {


            }

        }   
     }
    else
    {
        makeDoubMatrix(1,1);
    }

}


}

这是我应该开始我的任务:  写一个名为DoubleMatrix的类,在其中声明一个2-dim。双精度数组(我称之为doubMatrix)作为私有实例变量。包括以下构造函数或实例方法(此处为静态方法):

  • 第一个维度为int的构造函数(确保它是&gt; 0,如果不是,则设置为1),第二个维度为int(确保它是&gt; 0,如果不是则设置为1)并调用makeDoubMatrix私有实例方法(见下文)
  • 另一个具有2-dim的构造函数。 double的数组作为参数(如果参数不为null则赋值,如果每行与其他行的长度相同),否则,调用makeDoubMatrix为1,1)

有人检查一下,如果我在第二个构造函数中检查了吗?另外我在第二个中遗漏了分配语句,因为我不知道要分配什么,任何人都可以告诉我要分配什么,因为问题只说分配,但没有说分配到什么值。

2 个答案:

答案 0 :(得分:2)

您必须首先检查每一行,不管它们是否长度相同。您可以维护boolean flag变量,只要您看到当前行与下一行的长度不同,就可以将其设置为false

您可以尝试以下代码,并测试它是否有效: -

public DoubleMatrix(double[][] tempArray)
{   
    if(tempArray != null)
    {
        boolean flag = true;
        for(int i = 0; i < tempArray.length - 1;i++)
        {   
            // Check each row with the next row
            if(tempArray[i].length != tempArray[i + 1].length)
            {
                 // as you find the row length not equal, set flag and break
                 flag = false;
                 break;
            }
        }   
        if (flag) {
            doubleMatrix = tempArray;
        } else {
            makeDoubleMatrix(1,1);
        }
     } else {
        makeDoubleMatrix(1, 1);
     }
}

答案 1 :(得分:1)

public DoubleMatrix(double[][] tempArray)
{   
    //Calling tempArray.length if tempArray is null will get you an error
    if(tempArray != null)
    {


        for(int i = 0; i < tempArray.length;i++)
        {
            for(int j=0;j<tempArray[i].length;j++)
               {
                      doubleMatrx[i][j] = tempArray[i][j];
               }

        }   
     }
    else
    {
        makeDoubMatrix(1,1);
    }

}

同样在Java中,2D数组在每一行中始终具有相同数量的列,因为它的声明类似于int bob[][] = new int[a][b]