You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 20:35:29