正在学习稀疏数组的转换
代码敲完以后28 43 45 46 47行在编译时显示相同的错误,都是说,动态变量i,j不能被静态方式访问
有点儿不明白,这是网上听课时,老师讲的,我后来把代码改的和老师上课讲的一模一样,还是不行,不知道要怎么办,挺急的,希望有大佬帮忙解释一下~~~
- public class Data {
- public static void main(String[] args) {
- //创建一个原始二维数组11*11
- //0表示没有棋子,1表示黑子,2表示白子
- int chessArr1[][] = new int[11][11];
- chessArr1[1][2] = 1;
- chessArr1[2][3] = 2;
- //输出原始数组的二维数组
- System.out.println("原始的二维数组~~");
- for(int[] row : chessArr1){
- for(int data : row){
- System.out.printf( "%d\t",data);
- //输出每一个变量字面值
- //System.out.print( "%d\t",data);不行
- }
- System.out.print("\n");
- //System.out.println( );
- //System.out.printf( "\n");
- }
- //将二维数组转稀疏数组
- //1.先遍历二维数组得到非0数据个数
- int sum = 0;
- for(int i = 0; i < 11; i++ );{
- for(int j = 0; j < 11; j++ );{
- if(chessArr1[i][j]!= 0){
- sum++;
- }
- }
- }
- //2.创建对应稀疏数组
- int sparseArr[][] = new int[sum+1][3];
- //给稀疏数组赋值
- sparseArr[0][0] = 11;
- sparseArr[0][1] = 11;
- sparseArr[0][2] = sum;
- //第二次遍历,将非0值存放到sparseArr当中
- int count = 0;//count用于记录是第几个非0数据
- for(int i = 0; i < 11; i++ );{
- for(int j = 0; j < 11; j++ );{
- if(chessArr1[i][j]!= 0){
- count++;
- sparseArr[count][0] = i;
- sparseArr[count][1] = j;
- sparseArr[count][2] = chessArr1[i][j];
- }
- }
- }
- //输出稀疏数组的形式
- System.out.println();
- System.out.println("得到的稀疏数组为~~");
- for(int i = 0; i < sparseArr.length;i++){
- System.out.printf("%d\t%d\t%d\t\n",sparseArr[i][0],sparseArr[i][1],sparseArr[i][2]);
- }
- System.out.println();
- //将稀疏数组回复成原始的二维数组
- //1.先读取稀疏数组的第一行,根据第一行的数据,创建原始的二维数组
- int chessArr2[][] = new int[sparseArr[0][0]][sparseArr[0][1]];
- //2.在读取稀疏数组后几行的数据(从第二行开始),并赋给原始的二维数组即可
- for(int i = 1; i < sparseArr .length; i++) {
- chessArr2[sparseArr[i][0]][sparseArr[i][1]] = sparseArr[i][2];
- }
- //输出恢复后的二维数组
- System. out . println();
- System. out . println("输出恢复后的二维数组");
- for(int[] row : chessArr1){
- for(int data : row){
- System.out.printf( "%d\t",data);
- }
- System. out . println();
- }
- }
- }