交换多维数组中的值
swapping values in multi-dimensional array
我目前正在处理一个问题,我需要根据条件交换多维数组中的值。输入示例:
2 3
4 5
5 2
6 25
以上元素是一个4行2列的数组(columns = 2是固定的)。
如果列中的值大于行中的值,则无需更改任何内容,否则应互换值。
请在下面找到我的代码:
int c = 2;
int temp1, temp2;
Scanner in = new Scanner(System.in);
System.out.println("Enter 'n': ");
n = in.nextInt();
int[][] arr = new int[n][c];
if (n <= 15) {
for (int i = 0; i < n; i++) {
for (int j = 0; j < c; j++) {
System.out.println("Enter values into md-array: ");
arr[i][j] = in.nextInt();
}
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < c; j++) {
if (arr[i][j] < arr[i][j + 1]) {
System.out.println(arr[i][j]);
} else {
temp2 = i; //swapping
i = j;
j = temp2;
temp1 = j;
j = i;
i = temp1;
System.out.println(arr[i][j]);
}
}
}
}
当我尝试使用上述代码时,我可以将元素写入数组,但我无法执行交换操作或初始比较操作。我也面临IndexOutOfBoundsException
。我无法纠正这个问题。
试试这个:
int c=2;
int temp1, temp2;
Scanner in = new Scanner(System.in);
System.out.println("Enter 'n': ");
int n = in.nextInt();
int[ ][ ] arr = new int[n][c];
if (n<=15) {
for(int i=0; i<n;i++) {
for (int j=0;j<c;j++) {
System.out.println("Enter values into md-array: ");
arr[i][j]=in.nextInt();
}
}
System.out.println("====================================================");
for(int i[]: arr){
for(int j: i){
System.out.print(j+" ");
}
System.out.println("");
}
System.out.println("====================================================");
for(int i=0; i<n;i++) {
for (int j=0;j<c-1;j++) {
if (arr[i][j]<arr[i][j+1]) {
// System.out.println(arr[i][j]);
}
else {
temp2=arr[i][j]; //swapping
arr[i][j]=arr[i][j+1];
arr[i][j+1]=temp2;
// System.out.println(arr[i][j]);
}
}
}
for(int i[]: arr){
for(int j: i){
System.out.print(j+" ");
}
System.out.println("");
}
}
现在检查。我已经检查过它是否正常工作。我输入的示例数据是:
3 4
4 4
5 3
1 7
结果是:
3 4
4 4
3 5
1 7
我目前正在处理一个问题,我需要根据条件交换多维数组中的值。输入示例:
2 3
4 5
5 2
6 25
以上元素是一个4行2列的数组(columns = 2是固定的)。 如果列中的值大于行中的值,则无需更改任何内容,否则应互换值。
请在下面找到我的代码:
int c = 2;
int temp1, temp2;
Scanner in = new Scanner(System.in);
System.out.println("Enter 'n': ");
n = in.nextInt();
int[][] arr = new int[n][c];
if (n <= 15) {
for (int i = 0; i < n; i++) {
for (int j = 0; j < c; j++) {
System.out.println("Enter values into md-array: ");
arr[i][j] = in.nextInt();
}
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < c; j++) {
if (arr[i][j] < arr[i][j + 1]) {
System.out.println(arr[i][j]);
} else {
temp2 = i; //swapping
i = j;
j = temp2;
temp1 = j;
j = i;
i = temp1;
System.out.println(arr[i][j]);
}
}
}
}
当我尝试使用上述代码时,我可以将元素写入数组,但我无法执行交换操作或初始比较操作。我也面临IndexOutOfBoundsException
。我无法纠正这个问题。
试试这个:
int c=2;
int temp1, temp2;
Scanner in = new Scanner(System.in);
System.out.println("Enter 'n': ");
int n = in.nextInt();
int[ ][ ] arr = new int[n][c];
if (n<=15) {
for(int i=0; i<n;i++) {
for (int j=0;j<c;j++) {
System.out.println("Enter values into md-array: ");
arr[i][j]=in.nextInt();
}
}
System.out.println("====================================================");
for(int i[]: arr){
for(int j: i){
System.out.print(j+" ");
}
System.out.println("");
}
System.out.println("====================================================");
for(int i=0; i<n;i++) {
for (int j=0;j<c-1;j++) {
if (arr[i][j]<arr[i][j+1]) {
// System.out.println(arr[i][j]);
}
else {
temp2=arr[i][j]; //swapping
arr[i][j]=arr[i][j+1];
arr[i][j+1]=temp2;
// System.out.println(arr[i][j]);
}
}
}
for(int i[]: arr){
for(int j: i){
System.out.print(j+" ");
}
System.out.println("");
}
}
现在检查。我已经检查过它是否正常工作。我输入的示例数据是:
3 4
4 4
5 3
1 7
结果是:
3 4
4 4
3 5
1 7