Java 切换二维数组中的行和列
我想交换二维数组中的列和行 我的问题是希望变量“oldField”保存oldField。我认为这个变量和newField指向同一个对象,所以它被改变了,即使我不想这样 我想知道如何保存变量oldField independentJava 切换二维数组中的行和列,java,Java,我想交换二维数组中的列和行 我的问题是希望变量“oldField”保存oldField。我认为这个变量和newField指向同一个对象,所以它被改变了,即使我不想这样 我想知道如何保存变量oldField independent public int[][] swapMatrix(int[][] pField) { // swaps the rows and columns in // a Field
public int[][] swapMatrix(int[][] pField) { // swaps the rows and columns in
// a Field
int[][] oldField = pField.clone();
int[][] newField = pField.clone();
for (int i = 0; i < newField.length; i++) {
for (int j = (newField.length - 1); j >= 0; j--) {
newField[i][(newField.length - 1) - j] = oldField[j][i];
}
}
return newField;
}
public int[]swapMatrix(int[]pField){//交换
//田地
int[]oldField=pField.clone();
int[]newField=pField.clone();
for(int i=0;i=0;j--){
newField[i][(newField.length-1)-j]=oldField[j][i];
}
}
返回newField;
}
当使用int等基本值在一维数组中复制时,新数组和内容将复制到该数组中,并且没有引用
int row1[] = {0,1,2,3};
int row2[] = row1.clone();
row2[0] = 10;
System.out.println(row1[0] == row2[0]); // prints false
但对于二维数组,内容是对象,克隆方法仅执行浅层复制,如果存在对象,则不创建新内容。根据您的要求,您需要执行深度复制
int table1[][]={{0,1,2,3},{11,12,13,14}};
int table2[][] = table1.clone();
table2[0][0] = 100;
System.out.println(table1[0][0] == table2[0][0]); //prints true
当您使用int这样的基元值在一维数组中复制时,新数组和内容将复制到它,并且没有引用
int row1[] = {0,1,2,3};
int row2[] = row1.clone();
row2[0] = 10;
System.out.println(row1[0] == row2[0]); // prints false
但对于二维数组,内容是对象,克隆方法仅执行浅层复制,如果存在对象,则不创建新内容。根据您的要求,您需要执行深度复制
int table1[][]={{0,1,2,3},{11,12,13,14}};
int table2[][] = table1.clone();
table2[0][0] = 100;
System.out.println(table1[0][0] == table2[0][0]); //prints true
此代码解决了您的问题:
public class SwapRowsAndColumns {
public static void main(String[] args) {
int[][] someMatrix = new int[2][3];
someMatrix[0][0] = 1;
someMatrix[0][1] = 2;
someMatrix[0][2] = 3;
someMatrix[1][0] = 4;
someMatrix[1][1] = 5;
someMatrix[1][2] = 6;
printMatrix(someMatrix);
int[][] invertedMatrix = swapMatrix(someMatrix);
printMatrix(invertedMatrix);
}
private static int[][] swapMatrix(int[][] pField) {
int originalTotalRows = pField.length;
int originalTotalColumns = pField[0].length;
int[][] newMatrix = new int[originalTotalColumns][originalTotalRows];
for(int i=0; i< originalTotalRows; i++){
for(int j=0; j < originalTotalColumns; j++){
newMatrix[j][i] = pField[i][j];
}
}
return newMatrix;
}
private static void printMatrix(int[][] matrix){
int totalRows = matrix.length;
int totalColumns = matrix[0].length;
for(int i=0; i< totalRows; i++){
for(int j=0; j< totalColumns; j++){
System.out.print(matrix[i][j] + " ");
}
System.out.println("");
}
}
}
公共类SwapRowsAndColumns{
公共静态void main(字符串[]args){
int[]someMatrix=newint[2][3];
矩阵[0][0]=1;
矩阵[0][1]=2;
矩阵[0][2]=3;
矩阵[1][0]=4;
矩阵[1][1]=5;
矩阵[1][2]=6;
打印矩阵(someMatrix);
int[][]反相器矩阵=swapMatrix(someMatrix);
打印矩阵(反相器矩阵);
}
专用静态int[]swapMatrix(int[]pField){
int originalTotalRows=pField.length;
int originalTotalColumns=pField[0]。长度;
int[]newMatrix=newint[originalTotalColumns][originalTotalRows];
for(int i=0;i
此代码解决了您的问题:
public class SwapRowsAndColumns {
public static void main(String[] args) {
int[][] someMatrix = new int[2][3];
someMatrix[0][0] = 1;
someMatrix[0][1] = 2;
someMatrix[0][2] = 3;
someMatrix[1][0] = 4;
someMatrix[1][1] = 5;
someMatrix[1][2] = 6;
printMatrix(someMatrix);
int[][] invertedMatrix = swapMatrix(someMatrix);
printMatrix(invertedMatrix);
}
private static int[][] swapMatrix(int[][] pField) {
int originalTotalRows = pField.length;
int originalTotalColumns = pField[0].length;
int[][] newMatrix = new int[originalTotalColumns][originalTotalRows];
for(int i=0; i< originalTotalRows; i++){
for(int j=0; j < originalTotalColumns; j++){
newMatrix[j][i] = pField[i][j];
}
}
return newMatrix;
}
private static void printMatrix(int[][] matrix){
int totalRows = matrix.length;
int totalColumns = matrix[0].length;
for(int i=0; i< totalRows; i++){
for(int j=0; j< totalColumns; j++){
System.out.print(matrix[i][j] + " ");
}
System.out.println("");
}
}
}
公共类SwapRowsAndColumns{
公共静态void main(字符串[]args){
int[]someMatrix=newint[2][3];
矩阵[0][0]=1;
矩阵[0][1]=2;
矩阵[0][2]=3;
矩阵[1][0]=4;
矩阵[1][1]=5;
矩阵[1][2]=6;
打印矩阵(someMatrix);
int[][]反相器矩阵=swapMatrix(someMatrix);
打印矩阵(反相器矩阵);
}
专用静态int[]swapMatrix(int[]pField){
int originalTotalRows=pField.length;
int originalTotalColumns=pField[0]。长度;
int[]newMatrix=newint[originalTotalColumns][originalTotalRows];
for(int i=0;i
ty可能重复的可能重复,我用2x for(){…}复制了矩阵,现在效果很好,我用2x for(){…}复制了矩阵,现在效果很好