我目前正在解决一个问题,我需要根据条件交换多维数组中的值。输入的例子:
2 3
4 5
5 2
6 25
上述元素是4行2列的数组(列= 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
。我无法纠正这个问题。
答案 0 :(得分:0)
试试这个:
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