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

Java字符矩阵无空格输入填充功能实现求助

解决2×2字符矩阵支持无空格输入的问题

原代码依赖Scanner.next()按空白字符分隔输入,当用户输入无空格的连续字符(如ab、cd)时,next()会把整个连续字符串当作一个输入单元,导致程序需要4个输入单元才能完成矩阵填充,因此会陷入等待无法终止,且填充结果错误。

以下是两种可行的修改方案:

方案一:按行读取并处理字符

读取每行输入后,移除所有空白字符,再提取对应位置的字符填充矩阵,同时兼容带空格和无空格的输入:

char[][] matrix = new char[2][2];
Scanner scanner = new Scanner(System.in);

for (int i = 0; i < 2; i++) {
    // 读取整行并移除所有空白字符
    String line = scanner.nextLine().replaceAll("\\s", "");
    // 填充当前行的两个位置
    matrix[i][0] = line.charAt(0);
    matrix[i][1] = line.charAt(1);
}

这种方式直接对应每行矩阵的输入,用户输入a b或ab都会被处理为两个有效字符,填充到当前行的两个列中。

方案二:读取所有输入并过滤空白

一次性读取所有输入内容,过滤掉空白字符后,按顺序填充矩阵:

char[][] matrix = new char[2][2];
Scanner scanner = new Scanner(System.in);

// 读取全部输入直到结束,移除所有空白字符
String fullInput = scanner.useDelimiter("\\Z").next().replaceAll("\\s", "");
int charIndex = 0;
for (int i = 0; i < 2; i++) {
    for (int j = 0; j < 2; j++) {
        matrix[i][j] = fullInput.charAt(charIndex++);
    }
}

这种方式不区分行,只要用户输入的有效字符总数达到4个即可,比如用户输入abcd或a b c d都能正确填充矩阵。

补充说明

如果需要增加输入合法性校验(比如确保输入字符数量足够),可以在读取后添加判断逻辑,例如:

if (fullInput.length() < 4) {
    System.out.println("输入字符数量不足,请输入至少4个字符");
    // 后续处理逻辑,如退出或重新输入
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 03:55:17