Java 多维数组列交换

Java 多维数组列交换,java,multidimensional-array,Java,Multidimensional Array,在确定多维数组的特定列中的元素不是数字之后,我正在考虑交换此多维数组的两列 基本上,我想在确定第6列中的元素是否为数字后,将第4列的内容与第6列中的内容交换。因此,如果第6列中的元素不是数字,则创建新数组并开始在新数组中插入旧数组内容,但一旦该列到达旧数组的第4列,它就会放置该元素在新数组的第6列中,反之亦然 以下是我对上述问题的尝试。我已经能够成功地识别第6列中的元素是否为数字。现在,我对将第4列中的元素与第6列中的元素进行交换背后的逻辑表示怀疑 //!< public String[]

在确定多维数组的特定列中的元素不是数字之后,我正在考虑交换此多维数组的两列

基本上,我想在确定第6列中的元素是否为数字后,将第4列的内容与第6列中的内容交换。因此,如果第6列中的元素不是数字,则创建新数组并开始在新数组中插入旧数组内容,但一旦该列到达旧数组的第4列,它就会放置该元素在新数组的第6列中,反之亦然

以下是我对上述问题的尝试。我已经能够成功地识别第6列中的元素是否为数字。现在,我对将第4列中的元素与第6列中的元素进行交换背后的逻辑表示怀疑

//!<
public String[][] sortedByDateUsageStatsData(String[][] unsortedUsageStatsData) {
    System.out.println("\nbtnUsageStats - sortedByDateUsageStatsData(String[][] unsortedUsageStatsData)");

    for (int row = 0; row < unsortedUsageStatsData.length; row++) {
        for (int col = 0; col < 7; col++) {
            //System.out.println("unsortedUsageStatsData[" + row + "][" + col + "] => " + unsortedUsageStatsData[row][col]);
        }

        // Check if content in return code column i.e. column 6 is number or a string.
        // If a string then swap column 4 content with column 6 and pass this array with swapped columns as the final array
        if(!isNumericString(unsortedUsageStatsData[0][6])) {
            //System.out.println("unsortedUsageStatsData[0][6] is NOT a number i.e. " + unsortedUsageStatsData[0][6]);

            break;
        }

        System.out.println("\n");
    }

    System.out.println("\nExited for loop as unsortedUsageStatsData[0][6] is NOT a number\n");

    sortedUsageStatsData = new String[unsortedUsageStatsData.length][7];

    for (int row = 0; row < unsortedUsageStatsData.length; row++) {
        for (int col = 0; col < 7; col++) {
            //System.out.println("\nBefore swap unsortedUsageStatsData[" + row + "][" + col + "] => " + unsortedUsageStatsData[row][col]);

            sortedUsageStatsData[row][col] = unsortedUsageStatsData[row][col];

            if(col == 4) {
                System.out.println("\nBefore swap sortedUsageStatsData[" + row + "][6] => " + unsortedUsageStatsData[row][6]);                      
                sortedUsageStatsData[row][6] = unsortedUsageStatsData[row][4];
                System.out.println("\nAfter swap sortedUsageStatsData[" + row + "][6] => " + unsortedUsageStatsData[row][6]);                       

                sortedUsageStatsData[row][4] = unsortedUsageStatsData[row][6];
                System.out.println("\nAfter swap sortedUsageStatsData[" + row + "][4] => " + unsortedUsageStatsData[row][4]);                       
            }

            System.out.println("\nAfter swap sortedUsageStatsData[" + row + "][" + col + "] => " + unsortedUsageStatsData[row][col]);
        }

        System.out.println("\n");

    }

    return sortedUsageStatsData;
}
/<
公共字符串[][]sortedByDateUsageStatsData(字符串[][]unsortedUsageStatsData){
System.out.println(“\nbtnUsageStats-sortedByDateUsageStatsData(字符串[][]unsortedUsageStatsData)”);
对于(int row=0;row“+unsortedUsageStatsData[行][col]);
}
//检查返回代码列(即第6列)中的内容是数字还是字符串。
//如果是字符串,则将第4列内容与第6列交换,并将此数组与交换的列一起作为最终数组传递
如果(!isNumericString(unsortedUsageStatsData[0][6])){
//System.out.println(“unsortedUsageStatsData[0][6]不是一个数字,即“+unsortedUsageStatsData[0][6]);
打破
}
System.out.println(“\n”);
}
System.out.println(“\n作为unsortedDusageStatsData[0][6]为循环设置的不是数字\n”);
sortedUsageStatsData=新字符串[unsortedUsageStatsData.length][7];
对于(int row=0;row“+未排序的DusageStatsData[行][列]);
sortedUsageStatsData[行][col]=未排序的DUSAGESTATSDATA[行][col];
如果(列==4){
System.out.println(“\n交换前sortedUsageStatsData[“+行+”][6]=>“+未排序的DusAgeStatsData[行][6]);
SortedDusAgeStatsData[行][6]=未排序的DusAgeStatsData[行][4];
System.out.println(“\n交换sortedUsageStatsData[“+行+”][6]=>“+未排序的DusAgeStatsData[行][6]);
SortedDusAgeStatsData[行][4]=未排序的DusAgeStatsData[行][6];
System.out.println(“\n交换sortedUsageStatsData[“+行+”][4]=>“+未排序的DusAgeStatsData[行][4]);
}
System.out.println(“\n交换sortedUsageStatsData[“+row+”][“+col+”]=>“+unsortedUsageStatsData[row][col])后;
}
System.out.println(“\n”);
}
返回sortedUsageStatsData;
}

感谢您的帮助。

您的循环有问题。在迭代过程中,
col==6
覆盖以前设置的
sortedUsageStatsData[row][6]
值(col为4时)

有几种方法可以改变这一点,我将列举两种:

  • 仅从0迭代到5:
    for(int col=0;col<6;col++)

  • 在相应迭代中设置第4列和第6列的值:

        if(col == 4) {
            sortedUsageStatsData[row][4] = unsortedUsageStatsData[row][6];
        } else if (col == 6) {
            sortedUsageStatsData[row][6] = unsortedUsageStatsData[row][4];
        }
    

  • 这听起来像是一个数据淤泥在乞求某种结构。这对你有帮助吗@托克123