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

Java实现字符向量元素按随机规则填充到10×10矩阵问题

填充逻辑调整方案

核心逻辑修正说明

你原来的思路存在两个核心问题:

  • 变量名存在笔误:frase应为phrase,vet应为vector
  • 不应逐行遍历矩阵赋值,而是按照「字符顺序+步长跳转」的规则在矩阵中选位置放字符

具体实现逻辑如下:

  • 将10×10二维矩阵映射为0~99的一维位置索引,坐标换算规则:行索引 = 位置 / 10,列索引 = 位置 % 10
  • 初始化矩阵所有元素为空白占位符(比如空格)
  • 第一个字符放在起始位置0对应的矩阵坐标[0][0]
  • 后续每个字符:先生成0/1/2的随机步长,计算新位置 = 上一个位置 + 步长,如果新位置超过99则自动调整到合理范围,再将当前字符放入新位置对应的矩阵坐标
  • 所有字符填充完成后,遍历输出矩阵即可

修正后完整代码

import java.util.Scanner;

public class MatrixFill {
    public static void main(String[] args) {
        Scanner entrada = new Scanner(System.in);
        System.out.println("Type a phrase.");
        String phrase = entrada.nextLine();
        // 校验字符长度不超过50
        while (phrase.length() > 50) {
            System.out.println("The phrase has to be less than 50 characters. Try again.");
            phrase = entrada.nextLine();
        }
        int charLength = phrase.length();
        String[] vector = new String[charLength];
        for (int i = 0; i < charLength; i++) {
            vector[i] = String.valueOf(phrase.charAt(i));
        }

        // 初始化10x10矩阵,默认填充空格
        String[][] matrix = new String[10][10];
        for (int i = 0; i < 10; i++) {
            for (int j = 0; j < 10; j++) {
                matrix[i][j] = " ";
            }
        }

        int currentPos = 0;
        // 放第一个字符
        matrix[currentPos / 10][currentPos % 10] = vector[0];
        // 遍历剩余所有字符
        for (int i = 1; i < charLength; i++) {
            int step = (int) (Math.random() * 3);
            currentPos += step;
            // 防止位置超出矩阵范围(最大索引为99)
            if (currentPos >= 100) {
                currentPos = 99;
            }
            // 填充当前字符到对应位置
            matrix[currentPos / 10][currentPos % 10] = vector[i];
        }

        // 打印矩阵查看效果
        System.out.println("\n填充后的矩阵效果:");
        for (int i = 0; i < 10; i++) {
            for (int j = 0; j < 10; j++) {
                System.out.print(matrix[i][j] + " ");
            }
            System.out.println();
        }
        entrada.close();
    }
}

关键逻辑说明

  • 用一维位置索引处理跳转逻辑,避免二维坐标加减的复杂判断,实现更简单
  • 随机步长严格按照要求用(int)(Math.random() * 3)生成,取值范围是0、1、2符合规则要求
  • 增加了越界保护,避免跳转超出10×10矩阵的范围触发数组越界异常
  • 空白位置填充空格,输出时字符的分散效果更清晰

内容的提问来源于stack exchange,提问作者Wanderer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 16:06:03