嘿,我正在尝试转置一个二维数组,它的行/列是由用户输入的。我在这个网站上看了看,我看到的几乎所有的建议都是关于正方形数组(2x2,3x3,等等)
这是我到目前为止所拥有的
import java.util.Scanner;
public class ArrayTranspose {
public static void main(String[] args) {
Scanner kb = new Scanner(System.in);
System.out.print("Input the number of rows (must be between 2 and 5): ");
int rows = kb.nextInt();
if ((rows < 2) && (rows > 5)) {
System.out.println("Error: range must be between 2-5");
rows = -1;
}
System.out.print("Input the number of columns (must be between 2 and 5): ");
int cols = kb.nextInt();
if ((cols < 2) && (cols > 5)) {
System.out.println("Error: range must be between 2-5");
cols = -1;
}
int myArray[][] = new int[rows][cols];
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
System.out.println("Enter a data value for (" + (i + 1) + ", " + (j + 1) + "): ");
int value = kb.nextInt();
myArray[i][j] = value;
}
}
printArray(myArray);
System.out.println();
int newArray[][] = transpose(myArray);
printNewArray(newArray);
}
public static void printArray(int myArray[][]) {
int dim1 = myArray.length; // Gets the number of rows
int dim2 = myArray[0].length; // Gets the number of columns
for (int i = 0; i < dim1; i++) {
for (int j = 0; j < dim2; j++) {
System.out.printf("%4d", myArray[i][j]);
}
System.out.println();
}
}
public static int[][] transpose(int myArray[][]) {
int newArray[][] = new int[myArray[0].length][myArray.length];
for (int i = 0; i < myArray.length; i++) {
for (int j = 0; j < i; j++) {
// swap element[i,j] and element[j,i]
int temp = myArray[i][j];
newArray[i][j] = temp;
}
}
return newArray;
}
public static void printNewArray(int myArray[][]) {
int dim1 = myArray.length; // Gets the number of rows
int dim2 = myArray[0].length; // Gets the number of columns
for (int i = 0; i < dim1; i++) {
for (int j = 0; j < dim2; j++) {
System.out.printf("%4d", myArray[i][j]);
}
System.out.println();
}
}
}当我运行这个程序时,我得到的结果如下:
输入行数(必须在2到5之间):2
输入列数(必须在2到5之间):3
输入(1,1)的数据值:
11
输入(1,2)的数据值:
12
输入(1,3)的数据值:
13
输入(2,1)的数据值:
21
输入(2,2)的数据值:
22
输入(2,3)的数据值:
23
11 12 13
21 22 23
0%0
21 0
0%0
所以看起来一切都很顺利(它知道转置数组的新维数),但是转置数组中的数据值并不接受原始数组中的所有数字。
发布于 2017-05-01 01:28:23
public static int[][] transpose(int myArray[][]) {
int newArray[][] = new int[myArray[0].length][myArray.length];
for (int i = 0; i < myArray[0].length; i++) {
for (int j = 0; j < myArray.length; j++) {
int temp = myArray[j][i];
newArray[i][j] = temp;
}
}
return newArray;
}希望这能有所帮助:)
发布于 2017-05-01 01:30:34
我在这里只做了一点简单的事情:
public static int[][] transpose(int myArray[][]) {
int newArray[][] = new int[myArray[0].length][myArray.length];
for (int i = 0; i < newArray.length; i++) {
for (int j = 0; j < newArray[i].length; j++) {
newArray[i][j] = myArray[j][i];
}
}
return newArray;
}https://stackoverflow.com/questions/43708992
复制相似问题