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

Java限制输出行长度代码异常,求问题排查思路

问题分析与修复方案

我来帮你拆解下代码里的几个问题,这些问题共同导致了你的输出异常:

1. 单词长度检查的循环完全没执行

你写的单词长度检查循环条件是for (int x = 0; x >= seperatedWords.length; x++),这里x >= seperatedWords.length一开始就不成立(x初始是0,数组长度肯定大于0),所以这个循环根本不会跑,等于直接跳过了单词长度检查的逻辑。应该改成x < seperatedWords.length。

2. 每行末尾的多余空格

每次添加单词时你都拼接了" ",比如outputString += seperatedWords[j] + " ";,这就导致每行末尾多了一个不必要的空格。可以调整拼接逻辑:只有当outputString不为空时,才在单词前加空格,从根源避免末尾空格。

3. 最后一行内容未输出

循环结束后,outputString里还存着最后一行的内容,但你没有打印它。所以在循环结束后,需要判断outputString是否为空,如果不为空就把剩余内容打印出来。


修正后的完整代码

import java.util.Scanner;

public class TextSplitter {
    public static void main(String[] args) {
        Scanner keyboard = new Scanner(System.in);
        System.out.print("Type a sentence: ");
        String originalText = keyboard.nextLine();
        String[] separatedWords = originalText.split(" ");
        int check = 0;

        // 修复循环条件,正确检查每个单词长度
        for (int x = 0; x < separatedWords.length; x++) {
            if (separatedWords[x].length() > 16) {
                System.out.println("The input includes a word longer than 16 characters.");
                check = 1;
                break;
            }
        }

        String outputString = "";
        if (check == 0) {
            for (int j = 0; j < separatedWords.length; j++) {
                // 计算当前行加上新单词后的长度(考虑空格)
                int nextLength = outputString.isEmpty() 
                    ? separatedWords[j].length() 
                    : outputString.length() + 1 + separatedWords[j].length();

                if (nextLength <= 16) {
                    // 非空时先加空格,再拼单词,避免末尾空格
                    outputString = outputString.isEmpty() 
                        ? separatedWords[j] 
                        : outputString + " " + separatedWords[j];
                } else {
                    // 输出当前行,重置outputString为当前单词
                    System.out.println(outputString);
                    outputString = separatedWords[j];
                }
            }
            // 打印最后一行剩余内容
            if (!outputString.isEmpty()) {
                System.out.println(outputString);
            }
        }
        keyboard.close();
    }
}

测试你的输入

输入:There are a dozen fuzzy bunnies sleeping under the couch.
修正后的输出会是:

There are a dozen
fuzzy bunnies
sleeping under the
couch.

没有多余空格,且最后一行正常输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:26:58