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

如何用Java Scanner接收8行输入,仅合规时拆分打印单词?

解决输入恰好8行文本后拆分单词输出的问题

核心问题修复点

  1. 统计输入行数并控制读取数量:原代码会持续读取所有输入行,需改为仅读取8行并存储,后续判断是否满足行数要求。
  2. 添加行数校验逻辑:仅当实际输入行数恰好为8时,才执行单词拆分输出操作。
  3. 修复字符串处理细节:原代码用==做字符串比较是错误的,拆分后的空字符串需正确过滤,同时优化拆分正则避免生成无效空元素。

修改后的完整代码

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

class EightLines {
    public static void main(String[] args) {
        System.out.println("Enter 8 lines:");
        Scanner input = new Scanner(System.in);
        List<String> lines = new ArrayList<>();

        // 读取最多8行输入
        for (int i = 0; i < 8 && input.hasNextLine(); i++) {
            String line = input.nextLine();
            lines.add(line);
        }
        input.close();

        // 仅当正好输入8行时,执行单词拆分输出
        if (lines.size() == 8) {
            for (String line : lines) {
                printWords(line);
            }
        } else {
            System.out.println("Error: You must enter exactly 8 lines.");
        }
    }

    public static void printWords(String line) {
        line = line.trim();
        // 匹配空白字符+标点,避免拆分出空字符串
        String[] wordArray = line.split("[\\s;:,.!?'`]+");
        for (String word : wordArray) {
            if (!word.isEmpty()) {
                System.out.println(word);
            }
        }
    }
}

代码说明

  • 行数控制:用for循环限制读取8行,同时通过input.hasNextLine()处理用户提前终止输入的情况。
  • 行数校验:读取完成后检查集合长度是否为8,满足条件才输出单词,否则提示错误。
  • 拆分逻辑优化:正则[\\s;:,.!?']+匹配连续的空白或标点,减少空字符串生成;遍历直接用isEmpty()`过滤剩余空元素。
  • 比较逻辑修复:去掉原代码错误的word == " "判断,改用更准确的空字符串检查。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 22:01:16