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

Polybius方阵解密含空格密文:解决Java数组越界问题

问题分析与修复

错误原因

你碰到的ArrayIndexOutOfBoundsException本质是解密代码没处理密文中的空格。加密时明文的空格被保留在密文里,但你的解密逻辑默认所有字符都是两位一组的数字坐标,当遍历到空格时:

  • Character.getNumericValue(' ')返回值是-2
  • 减1后得到负数索引,直接用这个索引访问5长度的数组,必然触发越界错误

修复后的解密代码

修改decipher方法,加入空格判断逻辑:遇到空格直接保留,其余字符按两位坐标解析:

public static String decipher(String ctext, char[][] matrix) {
    StringBuilder deciphered = new StringBuilder();
    for (int i = 0; i < ctext.length(); ) { // 不固定步长,根据字符类型调整
        char currentChar = ctext.charAt(i);
        // 处理空格:直接追加,步长加1
        if (currentChar == ' ') {
            deciphered.append(' ');
            i++;
        } else {
            // 处理两位数字坐标:步长加2
            int row = Character.getNumericValue(currentChar) - 1;
            int col = Character.getNumericValue(ctext.charAt(i + 1)) - 1;
            deciphered.append(matrix[row][col]);
            i += 2;
        }
    }
    return deciphered.toString();
}

额外提醒

  • 确保密文中只有数字和空格,若存在其他非预期字符,可再加判断逻辑过滤或报错
  • 原输入输出的读取代码无需改动,保持原样即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 13:10:38