java - 在java中的二维数组中的行之间交换
问题描述
我正在编写一个应该在两个 2d 行之间交换的 java 代码,并且我已经完成了它,但我想检查我的工作是否正确以及是否需要进行任何修改。
import java.util.*;
public class Main {
public static void printMatrix(int[][] matrix){
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix[0].length; j++)
System.out.print(matrix[i][j] + " ");
System.out.println();
}
}
public static void exchangeAnyTwoRows(int[][] matrix,
int K, int L)
{
for (int i = 0; i < matrix[0].length; i++) {
int temp = matrix[K - 1][i];
matrix[K - 1][i] = matrix[L - 1][i];
matrix[L - 1][i] = temp;
}
printMatrix(matrix);
}
public static void main(String[] args)
{
int K = 2, L = 3;
int mat[][] = { { 2, 1, 4 }, { 1, 2, 3 }, { 3, 6, 2 } };
exchangeAnyTwoRows(mat, K, L);
}
}
任何帮助将非常感激。
解决方案
似乎您正在交换两行中的每个元素。我认为你不需要那样做。您可以一次交换行:
public static void exchangeAnyTwoRows(int[][] matrix, int r1, int r2) {
int[] temp = matrix[r1];
matrix[r1] = matrix[r2];
matrix[r2] = temp;
}
另一条评论是上面的代码会抛出ArrayIndexOutOfBoundsException
. 原因是您的行索引从 1 开始。您可以减少方法内的每个索引,但是,只使用基于 0 的索引会更好地避免混淆。
因此,您可能需要分别修改 和的值K
和。L
1
2
推荐阅读
- php - Docker PHP Cron 使用 ENV 变量
- c++ - 如何使用map c ++删除重复
- c++ - 将值推入由 getter 函数调用的列表时出现问题
- asp.net-core - 在 Blazor 客户端中使用带有 PatchAsync 的 JsonPatchDocument
- numpy - CNN Uint8 数据类型问题
- python - 是否可以在 Python 中让程序以某些组权限运行
- java - java - 如何检查一个值是否曾经是Java地图中的一个键
- python - 我可以在非 gui 服务器上使用 selenium webdriver 吗?(Python)
- c# - 基于 Blazor 服务器端中的文本输入启用/禁用按钮
- r - 如何计算 R 中多列的 ntiles?