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

Java实现字符串空格替换为换行符的编程问题求助

Java字符串空格替换为换行符的实现问题

问题说明

我是一名大一IT专业学生,近期作业要求编写Java程序:接收句子或短语,将字符串中的空格替换为换行符,让每个单词单独一行。示例:输入I am a student,输出每行一个单词。我自己写了代码但没实现需求,附上代码求错误分析和改进建议。另外,我尝试了Christoph Dahlen提出的String.replace方法,问题已经解决,非常感谢。

原代码

import java.util.*;
public class NumTwo{
    public static void main (String[] args){
        Scanner in = new Scanner(System.in);
        String phr;

        System.out.print("Enter a phrase: ");
        phr = in.nextLine();

        if(phr.contains(" ")){
            System.out.print(phr + "\n");
        }
        else{

        }
    }
}

错误分析

  • 核心逻辑缺失:代码仅判断字符串是否包含空格,但没有执行空格替换为换行符的操作,直接输出原字符串,完全没达到需求
  • 空分支问题:else分支无任何代码,当输入无空格的单个单词时,程序不会输出任何内容
  • 无边界处理:当前代码未考虑连续空格、开头/结尾空格的特殊情况

改进方案

方法1:使用String.replace(已验证可行)

直接调用String.replace方法将所有空格替换为换行符,是最简洁的实现方式:

import java.util.*;
public class NumTwo{
    public static void main (String[] args){
        Scanner in = new Scanner(System.in);
        System.out.print("Enter a phrase: ");
        String phr = in.nextLine();
        // 将所有空格替换为换行符后输出
        System.out.println(phr.replace(" ", "\n"));
    }
}

方法2:分割字符串后逐行输出(适合基础逻辑练习)

如果想手动处理单词分割,可以用split方法拆分字符串为单词数组,再循环输出每个单词:

import java.util.*;
public class NumTwo{
    public static void main (String[] args){
        Scanner in = new Scanner(System.in);
        System.out.print("Enter a phrase: ");
        String phr = in.nextLine();
        // 用\\s+匹配任意数量空白字符,兼容连续空格、制表符等场景
        String[] words = phr.split("\\s+");
        for(String word : words){
            // 跳过空字符串,避免开头/结尾空格导致的空行
            if(!word.isEmpty()){
                System.out.println(word);
            }
        }
    }
}

额外优化点

  • 可先对输入字符串调用trim(),去除开头和结尾的空白字符,避免输出不必要的空行
  • 若需处理多种空白字符(如制表符、连续空格),split("\\s+")比split(" ")更严谨

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 18:41:06