第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

遍歷大型 7*7 矩陣內(nèi)的 3* 3 子矩陣時(shí)綁定異常錯(cuò)誤的數(shù)組索引

遍歷大型 7*7 矩陣內(nèi)的 3* 3 子矩陣時(shí)綁定異常錯(cuò)誤的數(shù)組索引

慕碼人2483693 2023-06-28 15:23:40
我想從中間元素(第 2 行,第 2 列)的 (1,1) 起始位置遍歷一個(gè)大 7*7 矩陣內(nèi)的 3*3 子矩陣。位置 (1,1) 對(duì)應(yīng)的子矩陣將是                [(0,1),(0,2),(0,3)]                 [(1,1),(1,2),(1,3)]                 [(2,1),(2,2),(2,3)]像這樣遍歷將繼續(xù)..下一個(gè)子矩陣起始位置將是 (1,2)                 [(0,2),(0,3),(0,4)]                  [(1,2),(1,3),(1,4)]                  [(2,2),(2,3),(2,4)]我的代碼static int i;static int j;static int g;static int h;static void submatrix(int p,int q,int[][] mat) {System.out.print("Submatrix for : ");System.out.println(p+","+q);shiftmatrix(p,q,mat);}static void shiftmatrix(int p,int q,int[][] mat) { int m,n; int[][] d = new int[3][3]; for( m=0;m<3;m++) {  for( n=0;n<3;n++) {   p=m+(p-1);   q=n+q;   d[m][n]=mat[p][q];     }   }System.out.println("Your 3*3 SubMatrix is : ");    for ( m = 0; m < 3; m++){    for ( n = 0; n < 3; n++){        System.out.print(d[m][n]+"\t");        }         System.out.println();        }}public static void main(String[] args) {    int[][] a = new int[7][7];    int[][] mat = new int[7][7];    for ( i = 0; i < 7; i++)      {       for ( j = 0; j < 7; j++){          Random rand = new Random();           a[i][j] = rand.nextInt(10);          }      }//copying large matrix to another for passing by argument  System.out.println("Copied matrix is : "); for (i = 0; i < 7; i++){     for (j = 0; j < 7; j++){          mat[g][h]=a[i][j];            System.out.print(mat[g][h]+"\t");        }          System.out.println();    }//Here is the 3*3 submatrix traversing starts... for (i=1;i<6;i++) {   for (j=1;j<5;j++) {    int p=i;     int q=j;     submatrix(p,q,mat);     }  }}}運(yùn)行此代碼時(shí)出現(xiàn)錯(cuò)誤ArrayIndexOutOfBoundsException: -1 請(qǐng)幫忙
查看完整描述

1 回答

?
瀟湘沐

TA貢獻(xiàn)1816條經(jīng)驗(yàn) 獲得超6個(gè)贊

您的代碼IndexOutOfBoundsException中的 是您調(diào)用的p = m + (p - 1)。您不需要在循環(huán)的每次迭代中更改p和變量。q

此外,您還有幾個(gè)不必要的變量,其中一些是靜態(tài)的,當(dāng)您僅在這樣的循環(huán)中使用它們時(shí)應(yīng)該避免這種情況。在清理代碼的格式并刪除所有不必要的變量之后,我相信代碼可以按照您的要求運(yùn)行。

該代碼忽略隨機(jī)矩陣的第一行和第一列。這是期望的行為嗎?

import java.util.Random;


public class MatrixTest {


    public static void subMatrix(int startRow, int startCol, int[][] mat) {


        System.out.print("Submatrix for : ");

        System.out.println(startRow + ", " + startCol);

        shiftMatrix(startRow, startCol, mat);

    }


    public static void shiftMatrix(int startRow, int startCol, int[][] mat) {

        int[][] d = new int[3][3];

        for (int i = 0; i < 3; i++) {

            for (int j = 0; j < 3; j++) {

                //to properly move within the 3x3 you only need to add a 

                //constant buffer to the indices of mat[][]

                d[i][j] = mat[i + startRow][j + startCol]; 

            }

        }

        System.out.println("Your 3*3 SubMatrix is : ");

        for (int i = 0; i < 3; i++) {

            for (int j = 0; j < 3; j++) {

                System.out.print(d[i][j] + "\t");

            }

            System.out.println();

        }

    }

    public static void main(String[] args) {


        int[][] mat = new int[7][7];

        for (int i = 0; i < 7; i++) {

            for (int j = 0; j < 7; j++){

                Random rand = new Random();

                mat[i][j] = rand.nextInt(10);

            }

        }


        //copying large matrix to another for passing by argument 


        System.out.println("Copied matrix is : ");

        for (int i = 0; i < 7; i++){

            for (int j = 0; j < 7; j++) {

                System.out.print(mat[i][j] + "\t");

            }

            System.out.println();

        }

        //Here is the 3*3 submatrix traversing starts...


        for (int i = 1; i < 5; i++) { //changed from i < 6 to i < 5 to stay inside 7x7

            for (int j = 1; j < 5; j++) {

                subMatrix(i, j, mat);

            }

        }

    }

}


查看完整回答
反對(duì) 回復(fù) 2023-06-28
  • 1 回答
  • 0 關(guān)注
  • 189 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)