Java 多维数组列交换
在确定多维数组的特定列中的元素不是数字之后,我正在考虑交换此多维数组的两列 基本上,我想在确定第6列中的元素是否为数字后,将第4列的内容与第6列中的内容交换。因此,如果第6列中的元素不是数字,则创建新数组并开始在新数组中插入旧数组内容,但一旦该列到达旧数组的第4列,它就会放置该元素在新数组的第6列中,反之亦然 以下是我对上述问题的尝试。我已经能够成功地识别第6列中的元素是否为数字。现在,我对将第4列中的元素与第6列中的元素进行交换背后的逻辑表示怀疑Java 多维数组列交换,java,multidimensional-array,Java,Multidimensional Array,在确定多维数组的特定列中的元素不是数字之后,我正在考虑交换此多维数组的两列 基本上,我想在确定第6列中的元素是否为数字后,将第4列的内容与第6列中的内容交换。因此,如果第6列中的元素不是数字,则创建新数组并开始在新数组中插入旧数组内容,但一旦该列到达旧数组的第4列,它就会放置该元素在新数组的第6列中,反之亦然 以下是我对上述问题的尝试。我已经能够成功地识别第6列中的元素是否为数字。现在,我对将第4列中的元素与第6列中的元素进行交换背后的逻辑表示怀疑 //!< public String[]
//!<
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时)
有几种方法可以改变这一点,我将列举两种:
for(int col=0;col<6;col++)
if(col == 4) {
sortedUsageStatsData[row][4] = unsortedUsageStatsData[row][6];
} else if (col == 6) {
sortedUsageStatsData[row][6] = unsortedUsageStatsData[row][4];
}
这听起来像是一个数据淤泥在乞求某种结构。这对你有帮助吗@托克123