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
相关产品推荐
相关产品推荐

