&引用;java.lang.ArrayIndexOutOfBoundsException“;尝试创建棋盘以创建QRcode的计时模式时
我的作业是创建一个QR码生成器,我一直在创建QR码基矩阵的两个计时模式。 因此,我正在寻找一种方法,使用2D数组创建一个棋盘,然后仅使用第一列和第一列,依次用一个黑点、一个白点、一个黑点等填充另外两个数组。然后我用第一行填充水平计时模式数组,用第一列填充垂直计时模式。为此,我使用两种方法:1)创建检查板并“填充”计时模式,2)声明两个计时模式数组,然后填充它们 这是我创建的代码:&引用;java.lang.ArrayIndexOutOfBoundsException“;尝试创建棋盘以创建QRcode的计时模式时,java,arrays,Java,Arrays,我的作业是创建一个QR码生成器,我一直在创建QR码基矩阵的两个计时模式。 因此,我正在寻找一种方法,使用2D数组创建一个棋盘,然后仅使用第一列和第一列,依次用一个黑点、一个白点、一个黑点等填充另外两个数组。然后我用第一行填充水平计时模式数组,用第一列填充垂直计时模式。为此,我使用两种方法:1)创建检查板并“填充”计时模式,2)声明两个计时模式数组,然后填充它们 这是我创建的代码: //method to create the checkboard public static int[][] ti
//method to create the checkboard
public static int[][] timingPatternFilling (int[][] timingPattern) {
for (int i=0;i<timingPattern[0].length-1;i++)
for (int j=0;j<=timingPattern[1].length-1;j++)
if (((i%2==0)&&(j%2==0))||((i%2==1)&&(j%2==1))) {
timingPattern[i][j] = B;
System.out.print(timingPattern[i][j]);
}
else {
timingPattern[i][j] = W;
System.out.print(timingPattern[i][j]);
}
System.out.println();
return timingPattern;
}
//method to create the Timing Pattern
public static void addTimingPatterns(int[][] matrix) {
// creation of the Timing Pattern (The calculation "matrix[1].length-2*(finderPatternSize+1)" allow to calculate the timingPattern length depending on the size of the matrix minus 2 times the size of the finder Pattern size
int timingPatternVertical[][] = new int [matrix[0].length-(2*whiteSquareSize)][timingPatternLength];
int timingPatternHorizontal[][] = new int [timingPatternLength][matrix[1].length-(2*whiteSquareSize)];
//filling with the Black Pattern
timingPatternFilling(timingPatternVertical);
timingPatternFilling(timingPatternHorizontal);
//创建棋盘的方法
公共静态int[][]计时模式填充(int[][]计时模式){
for(int i=0;i您的for
循环看起来很奇怪。请尝试以下方法:
for (int i=0;i<timingPattern.length;i++)
for (int j=0;j<=timingPattern[i].length;j++)
for(int i=0;iit确实与数组的长度有关。这意味着您试图获取与数组大小相同或更大的索引,但该索引不存在(或负id)