鐘鐘空 2021-01-28 00:32 采纳率: 75%
浏览 61

学习稀疏数组时的一个BUG,求大佬来解惑

  正在学习稀疏数组的转换

  代码敲完以后28 43 45 46 47行在编译时显示相同的错误,都是说,动态变量i,j不能被静态方式访问

  有点儿不明白,这是网上听课时,老师讲的,我后来把代码改的和老师上课讲的一模一样,还是不行,不知道要怎么办,挺急的,希望有大佬帮忙解释一下~~~

  1. public class Data {
  2.     public static void main(String[] args) {
  3.         //创建一个原始二维数组11*11
  4.         //0表示没有棋子,1表示黑子,2表示白子
  5.         int chessArr1[][] = new int[11][11];
  6.         chessArr1[1][2] = 1;
  7.         chessArr1[2][3] = 2;
  8.         
  9.         //输出原始数组的二维数组
  10.         System.out.println("原始的二维数组~~");
  11.         for(int[] row  : chessArr1){
  12.             for(int data : row){            
  13.                 System.out.printf( "%d\t",data);
  14.                 //输出每一个变量字面值
  15.                 //System.out.print( "%d\t",data);不行
  16.             }
  17.              System.out.print("\n");
  18.              //System.out.println( );
  19.              //System.out.printf( "\n");
  20.         }
  21.     
  22.         //将二维数组转稀疏数组
  23.         //1.先遍历二维数组得到非0数据个数
  24.         int sum = 0;
  25.         for(int i = 0;  i < 11; i++ );{
  26.             for(int j = 0; j < 11; j++ );{
  27.                 
  28.                 if(chessArr1[i][j]!= 0){
  29.                     sum++;
  30.                 }
  31.             }
  32.         }
  33.         //2.创建对应稀疏数组
  34.         int sparseArr[][] = new int[sum+1][3];
  35.         //给稀疏数组赋值
  36.         sparseArr[0][0] = 11;
  37.         sparseArr[0][1] = 11;
  38.         sparseArr[0][2] = sum;
  39.         //第二次遍历,将非0值存放到sparseArr当中
  40.         int count = 0;//count用于记录是第几个非0数据
  41.         for(int i = 0;  i < 11; i++ );{
  42.             for(int j = 0; j < 11; j++ );{
  43.                 if(chessArr1[i][j]!= 0){
  44.                     count++;
  45.                     sparseArr[count][0] = i;
  46.                     sparseArr[count][1] = j;
  47.                     sparseArr[count][2] = chessArr1[i][j];
  48.                 }
  49.             }
  50.         }
  51.         
  52.         //输出稀疏数组的形式
  53.         System.out.println();
  54.         System.out.println("得到的稀疏数组为~~");
  55.         for(int i  = 0; i < sparseArr.length;i++){
  56.             System.out.printf("%d\t%d\t%d\t\n",sparseArr[i][0],sparseArr[i][1],sparseArr[i][2]);
  57.         }
  58.         System.out.println();
  59.         
  60.         //将稀疏数组回复成原始的二维数组
  61.         //1.先读取稀疏数组的第一行,根据第一行的数据,创建原始的二维数组
  62.         int chessArr2[][] = new int[sparseArr[0][0]][sparseArr[0][1]];
  63.         //2.在读取稀疏数组后几行的数据(从第二行开始),并赋给原始的二维数组即可
  64.         for(int i = 1; i < sparseArr .length; i++) {
  65.         chessArr2[sparseArr[i][0]][sparseArr[i][1]] = sparseArr[i][2];
  66.         }
  67.         //输出恢复后的二维数组
  68.         System. out . println();
  69.         System. out . println("输出恢复后的二维数组");
  70.         for(int[] row  : chessArr1){
  71.             for(int data : row){            
  72.                 System.out.printf( "%d\t",data);
  73.             }
  74.             System. out . println();
  75.         }   
  76.     }
  77. }
  78.         
  79.     

  80.  
  • 写回答

3条回答 默认 最新

  • Paigu癫 2021-01-28 00:59
    关注

    你这for循环还可以这样遍历写的?;{

    评论

报告相同问题?

悬赏问题

  • ¥15 链接问题 C++LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的
  • ¥15 r语言蛋白组学相关问题
  • ¥15 Python时间序列如何拟合疏系数模型
  • ¥15 求学软件的前人们指明方向🥺
  • ¥50 如何增强飞上天的树莓派的热点信号强度,以使得笔记本可以在地面实现远程桌面连接