JAVA-交换二维数组中最大元素与最小元素所在行的数据

今天做了这道题算是比较坑的一题,前前后后花了不少时间才弄懂,也足以说明我现在依旧是一个小菜鸡并且上升空间还是很大的。下面放出最终成型代码段和测试结果。
代码段

package javaapplication11;
import java.util.*;
public class JavaApplication11 {
    
    public static void main(String[] args) 
    {
        int a[][],i,j,minI,maxI,temp,min,max;
        a=new int[3][4];//二维数组a忘了指定数组长度
        Scanner reader=new Scanner(System.in);
         for(i=0;i<3;i++)
             for(j=0;j<4;j++)
                 a[i][j]=reader.nextInt();
         minI=maxI=0;
         min=max=a[0][0];
         for(i=0;i<3;i++)
         {
             for(j=0;j<4;j++)
             {
                 if(a[i][j]>max)
                 {
                     maxI=i;
                 }
                 if(a[i][j]<min)
                 {
                     minI=i;
                 }
             }
         }
         //此时maxI=2,minI=0 符合正常预期
         for(j=0;j<4;j++)
         {
             temp=a[minI][j];
             a[minI][j]=a[maxI][j];
             a[maxI][j]=temp;
         }//行标minI和maxI最开始时不小心写成了存放行列式中最大和最小数据的max和min变量,导致无法实现交换行的效果.血崩啊,看来下次两个种不同功能的变量的取名不能太接近
         for(i=0;i<3;i++)
         {
             for(j=0;j<4;j++)
             {
                 System.out.print(a[i][j]+"\t");
             }
             System.out.println();
         }
    }
    
}

测试结果
在这里插入图片描述
坑点分析
坑点1:第一遍的时候将最大数据与最小数据所在行的行标变量MaxI和MinI写成了存放最大最小数据的变量Max和Min了,尽管这样没有报错,但并没有完成预期的交换第1行和第三行数据的目标。
坑点2:最后输出的时候刚开始是直接把换行也同时放到了内循环中导致最后输出格式不是矩阵的格式。接下来是两种不同的输出格式及其运行结果截图
第一种正确的输出格式
JAVA-交换二维数组中最大元素与最小元素所在行的数据_第1张图片
在这里插入图片描述
第二种错误的输出格式

for(i=0;i<3;i++)
         {
             for(j=0;j<4;j++)
             {
                 System.out.print(a[i][j]+"\t");
                 System.out.println();
             }
         }

JAVA-交换二维数组中最大元素与最小元素所在行的数据_第2张图片
要输出一个行列式必须将输出数据与换行相分开,先将一行的数据全部输出并制表再换行。

总结:
1 加强编程练习,做题比学习各种语法重要
2 提高自己的调试能力,现阶段先熟练断点调试

你可能感兴趣的:(JAVA-交换二维数组中最大元素与最小元素所在行的数据)