我必须从数组中反转一行。
用户输入行和列,然后输入数字以填充数组(我将在下面给出一个示例)
然后我需要接收输入的数据并将其反转并再次填充数组。
示例:
3 3(用户输入行和列)
1 2 3(用户输入用适当数量的元素填充数组)
3 2 1
2 1 3
需要:
2 1 3
3 2 1
1 2 3
我现在的代码只是很多漫无目的的猜测(以及谷歌和这里的一些类似问题)而且现在我只能让它换成
1 2 3
3 2 1
1 2 3
我必须实现的代码:
public static void reverseRows(int[][] inTwoDArray)
{
for (int row = inTwoDArray.length-1; row >= 0; row--)
{
for (int col = inTwoDArray[0].length-1; col >= 0; col--)
{
inTwoDArray[row][col] = inTwoDArray[inTwoDArray.length-1-row][col];
}
}
printArray(inTwoDArray);
}
非常感谢任何帮助,谢谢!
答案 0 :(得分:3)
您需要将您正在交换的值存储在临时变量中, 也不需要逐个元素地交换行。
public static void reverseRows(int[][] inTwoDArray){
int lastIndex = inTwoDArray.length-1;
for (int row = 0; row < inTwoDArray.length/2; row++){
int[] temp = inTwoDArray[row];
inTwoDArray[row] = inTwoDArray[lastIndex - row];
inTwoDArray[lastIndex - row] = temp;
}
printArray(inTwoDArray);
}
答案 1 :(得分:1)
public class ReverseArray {
public static void main(String[] args) {
int[][] arr = {{1,2,3},{3,2,1},{2,1,3}};
reverseRows(arr);
}
public static void reverseRows(int[][] inTwoDArray) {
List<int[]> tmp = Arrays.asList(inTwoDArray);
Collections.reverse(tmp);
inTwoDArray = tmp.toArray(inTwoDArray);
for(int[] outer:inTwoDArray){
for(int inner:outer){
System.out.print(inner + " ");
}
System.out.println();
}
}
}
答案 2 :(得分:1)
public static int[][] fliprows(int array[][]) {
int temp[][] = new int[array.length][array[0].length];
int j;
for (int i = 0; i < array.length; ++i) {
j = array.length - 1 - i;
temp[i] = array[j];
}
return temp;
}
public static int[][] flipcolumns(int array[][]) {
int temp[][] = new int[array.length][array[0].length];
for (int i = 0; i < array.length; ++i) {
for (int j = 0; j < array[i].length; ++j) {
temp[i][j] = array[i][array[i].length - j - 1];
}
}
return temp;
}
public static void main(String[] args) {
int array[][] = {{1, 2, 3}, {3, 2, 1}, {2, 1, 3}};
array = fliprows(array);
for (int i = 0; i < array.length; ++i) {
for (int j = 0; j < array[i].length; ++j)
System.out.print(array[i][j]);
System.out.println();
}
}