你好,我有这个程序,我想知道你怎么做才能改变第一行和最后一行
例如:
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
更改为:
4 2 3 1
8 6 7 5
12 10 11 9
16 14 15 13
这是我到目前为止所拥有的
import java.io.*;
import java.util.Scanner;
public class DynamicMatrix {
public static void main(String args[]){
Scanner sc=new Scanner(System.in);
System.out.println("Enter the number of rows and colomns:");
int row=sc.nextInt();
int col=sc.nextInt();
int arr[][]=new int[row][col];
System.out.println("Enter the numbers for the matrix:");
for(int i=0;i<row;i++)
for(int j=0;j<col;j++)
arr[i][j]=sc.nextInt();
}
}
答案 0 :(得分:1)
// display your matrix:
for(int i=0;i<row;i++){
System.out.println("");
for(int j=0;j<col;j++){
System.out.print(arr[i][j]);
}
}
// reversing your matrix
int temp = 0 ;
for(int i=0;i<row/2;i++){
for(int j=0;j<col/2;j++){
temp = arr[i][j];
arr[i][j] = arr[i][col-j-1];
arr[i][col-j-1] = temp ;
}
}
// display the reversed one
for(int i=0;i<row;i++){
System.out.println("");
for(int j=0;j<col;j++){
System.out.print(arr[i][j]);
}
}
<强>更新强>
整个事情应该是这样的:
import java.io.*;
import java.util.Scanner;
public class DynamicMatrix {
public static void main(String args[]){
Scanner sc=new Scanner(System.in);
System.out.println("Enter the number of rows and colomns:");
int row=sc.nextInt();
int col=sc.nextInt();
int arr[][]=new int[row][col];
System.out.println("Enter the numbers for the matrix:");
for(int i=0;i<row;i++)
for(int j=0;j<col;j++)
arr[i][j]=sc.nextInt();
// display your matrix:
for(int i=0;i<row;i++){
System.out.println("");
for(int j=0;j<col;j++){
System.out.print(arr[i][j]);
}
}
// reversing your matrix
int temp = 0 ;
for(int i=0;i<row/2;i++){
for(int j=0;j<col/2;j++){
temp = arr[i][j];
arr[i][j] = arr[i][col-j-1];
arr[i][col-j-1] = temp ;
}
}
// display the reversed one
for(int i=0;i<row;i++){
System.out.println("");
for(int j=0;j<col;j++){
System.out.print(arr[i][j]);
}
}
}
}
更新:
我更新了它应该正常工作的代码。我正在重做两次因为我正在迭代抛出所有col
和所有row
而不是迭代其中的一半。
输出:
Enter the number of rows and colomns:
2
2
Enter the numbers for the matrix:
1
2
3
4
12
341 will be replacing 2
2
21
34
答案 1 :(得分:0)
尝试以下代码......
public static void main(String[] args){
Integer array[][] = {{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15},{16,17,18,19,20},{21,22,23,24,25}};
printArray(array);
System.out.println();
printArray(reverseRows(array));
}
public static Integer[][] reverseRows(Integer[][] array){
Integer[][] arrayToReturn = new Integer[array.length][array[0].length];
for(int i = 0 ; i < array[1].length; i ++){
arrayToReturn[i] = Arrays.copyOf(array[i], array[i].length);
Integer newFirst = arrayToReturn[i][arrayToReturn[i].length - 1];
Integer newLast = arrayToReturn[i][0];
arrayToReturn[i][0] = newFirst;
arrayToReturn[i][arrayToReturn[i].length - 1] = newLast;
}
return arrayToReturn;
}
public static void printArray(Integer[][] array){
for(int i = 0 ; i < array.length ; i ++){
System.out.println(Arrays.toString(array[i]));
}
}
将输出
[1, 2, 3, 4, 5]
[6, 7, 8, 9, 10]
[11, 12, 13, 14, 15]
[16, 17, 18, 19, 20]
[21, 22, 23, 24, 25]
[5, 2, 3, 4, 1]
[10, 7, 8, 9, 6]
[15, 12, 13, 14, 11]
[20, 17, 18, 19, 16]
[25, 22, 23, 24, 21]
我认为这就是你要找的东西。这假设你已经将整个数组放在内存中了。