Java二维数组覆写问题:QR码定位图案实现求助
QR码项目二维数组覆写问题求助
本人是Java新手,若有错误或未遵守规则请见谅:) 正在完成课程的QR码项目,已卡在此程序一周有余,急需理解如何覆写二维数组。目前已完成dim×dim的随机0、1二维数组,现需按照setFinder方法的要求覆写该二维数组。
需定义的方法要求如下:
- createPattern:返回一个长度为dim²的一维数组,数组由给定种子构造的
java.util.Random对象生成的随机0和1填充。 - setGrid:接收维度dim,实例化dim×dim的二维数组,并按行填充传入的一维pattern数组内容。
- getGrid:返回grid成员的副本。
- addFinders:调用setFinder方法设置三个定位图案(左上、右上、左下)的位置。
- setFinder:调用fillSquare方法,按以下规则覆写现有grid以生成定位图案,定位图案的左上角由参数xPos(列)和yPos(行)指定;若grid为null则返回null:
- 最外层边框:宽度2像素,值设为1(GUI中为白色)
- 第二层边框:宽度2像素,值设为0(GUI中为黑色)
- 第三层边框:宽度2像素,值设为2(GUI中为白色)
- 最内层方块:3×3像素,值设为3(GUI中为黑色)
- fillSquare:根据指定的起始坐标、宽度和颜色设置方块区域的颜色,传入的border width参数暂未使用。
以下是我目前的代码:
import java.util.Random; import java.util.Arrays; public class QRCode { Random RD = new Random(); private int[][] grid; public int[] createPattern(int dim, int seed){ Random RD = new Random(seed); int[] pattern = new int[dim*dim]; for(int i = 0; i < pattern.length - 1; i++){ pattern[i] = RD.nextInt(-1,1)+1; } return pattern; } public void setGrid(int dim, int[] pattern){ int x = 0; grid = new int[dim][dim]; for (int i = 0; i < dim; i++) { for (int j = 0; j < dim; j++) { grid[i][j] = pattern[x]; x++; } } } public int[][] getGrid(){ return null; } public void setFinder(int xPos, int yPos){ } public void addFinder(int dimension){ } public void fillSquare(int startX, int startY, int width, int color, int helper){ } }
内容的提问来源于stack exchange,提问作者Gavin Freitas
相关产品推荐
相关产品推荐

