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

