You need to enable JavaScript to run this app. Java用Scanner实现多行输入元音替换为* 解决仅处理首行问题
优惠活动
大模型
产品
解决方案
定价
更多

Java用Scanner实现多行输入元音替换为* 解决仅处理首行问题

修复仅能处理单行输入的问题

你现在代码只处理第一行的原因很直接:整个主流程里只调用了一次scan.nextLine(),读完第一行的break做完替换就直接退出了,根本没有读取后面两行的逻辑。

可直接用的修改方案

固定处理3行输入的版本

如果确定输入就是固定3行单词,加个循环逐行读取即可,完整可编译的代码如下:

import java.util.Scanner;

public class Solution {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        // 循环读取3次输入,和示例的三行输入对应
        for (int i = 0; i < 3; i++) {
            String enterWord = scan.nextLine();
            // 保留原有的元音替换逻辑
            enterWord = enterWord.replaceAll("[aeiou]", "*");
            System.out.println(enterWord);
        }
        scan.close();
    }
}

运行这段代码处理你给出的示例输入,输出和预期完全一致:

  • break 转换为 br**k
  • robert 转换为 rbrt
  • yeah 转换为 y**h

兼容任意行数的通用版本

如果不想硬编码3行的读取次数,可以改成逐行检测、读到输入结束自动停止的逻辑,不管输入是2行、3行还是N行都能正常处理,只需要把循环部分替换为:

while (scan.hasNextLine()) {
    String enterWord = scan.nextLine();
    enterWord = enterWord.replaceAll("[aeiou]", "*");
    System.out.println(enterWord);
}

注意:当前的正则[aeiou]只会替换小写元音,如果需要把A/E/I/O/U这类大写元音也替换成*,可以把正则改成[aeiouAEIOU]。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.28 22:36:05