Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 返回添加到电路板的新单元数_Java_Multidimensional Array - Fatal编程技术网

Java 返回添加到电路板的新单元数

Java 返回添加到电路板的新单元数,java,multidimensional-array,Java,Multidimensional Array,我有一个二维数组列表,其维度为2行和2列: | 0| 1| +---+---+ 0 | 0| 0| +---+---+ 1 | 0| 0| +---+---+ 和方法expandBoard(int行,int列),它用给定的坐标展开board。例如: expandBoard(4, 3){ | 0| 1| 2| 3| +---+---+---+---+ 0 | 0| 0| 0| 0| +---+---+---+---+ 1 | 0| 0

我有一个二维数组列表,其维度为2行2列: | 0| 1| +---+---+ 0 | 0| 0| +---+---+ 1 | 0| 0| +---+---+ 和方法
expandBoard(int行,int列)
,它用给定的坐标展开board。例如:

expandBoard(4, 3){
    |  0|  1|  2|  3|
    +---+---+---+---+
  0 |  0|  0|  0|  0|
    +---+---+---+---+
  1 |  0|  0|  0|  0|
    +---+---+---+---+
  2 |  0|  0|  0|  0|
    +---+---+---+---+
  3 |  0|  0|  0|  0|
    +---+---+---+---+
  4 |  0|  0|  0|  0|
    +---+---+---+---+
}
现在,有三行被添加到了电路板上,还有两列(
addedRows=3,addedCols=2
)。如何确定因扩展而创建的新单元的总数

public int expand(int row, int col){
        int rowsCount = 0;
        int colsCount = 0;
        int addedRows = 0;
        int addedCols = 0;
        int cols = getPhysicalCols();

        if ((minRow <= row && maxRow >= row)
                && (minCol <= col && maxCol >= col)) {
            return 0;
        } 

        else {
            if (row < minRow) {
                while (row != minRow) {
                    addRowTop();
                    rowsCount++;
                    addedRows++ ;
                }

                if (col < minCol) {
                    while (col != minCol) {
                        addColLeft();
                        colsCount++;
                        addedCols++;
                    }
                }
                if (col > maxCol) {
                    while (maxCol != col) {
                        addColRight();
                        colsCount++;
                        addedCols++;
                    }
                }
            }
return (addedRows * cols) + getPhysicalRows() + getPhysicalCols();
}

public void addRowTop(){
        ArrayList<T> rowLine = new ArrayList<T>();
        myBoard.add(0, rowLine);
        this.minRow -= 1;
        origCol = maxCol - minCol;
        for(int col = 0; col <= origCol; col++){
            rowLine.add(col, this.element);
        }
    }

public int getPhysicalRows(){
        return myBoard.size();
    }
public int getPhysicalCols(){
        return myBoard.get(myBoard.size() - 1).size();

    }
public int expand(int行,int列){
int rowsunt=0;
int colscont=0;
整数加法=0;
整数加法=0;
int cols=getPhysicalCols();
如果((minRow=行)
&&(minCol=col){
返回0;
} 
否则{
如果(行<最小行){
while(row!=minRow){
addRowTop();
rowsCount++;
addedRows++;
}
if(col最大列){
while(maxCol!=col){
addColRight();
colscont++;
adddcols++;
}
}
}
return(addedRows*cols)+getPhysicalRows()+getPhysicalCols();
}
public void addRowTop(){
ArrayList行线=新建ArrayList();
添加(0,行线);
this.minRow-=1;
origCol=最大值-最小值;

对于(int col=0;col如果现有矩阵是M行乘以N列,并且要添加x行和y列,则要创建的单元格数等于:

(M + x) * (N + y) - (M * N)

也就是说,结果矩阵
(M+x)*(N+y)
的维数减去原始矩阵
(M*N)的维数

请输入相关代码。我假设M和N都来自原始2d Arraylist,即在扩展之前?@LukeMWillisThank you!我很好奇为您计算公式有多容易?@John很乐意帮忙!做了很多这类事情后,我能够相当快地解决它,但这一切都需要经验。您(还有,如果我回答了你的问题,请接受我的回答)当然!再次感谢你!