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

为什么Java使用Scanner输入带空格的字符串无法完整打印?

问题原因

Scanner类的next()方法默认使用空白字符(空格、换行、制表符等)作为内容分隔符,只会读取从当前光标位置到下一个空白字符之间的内容,所以输入带空格的字符串时只能拿到第一个空格前的片段。

解决方法

你搜到的nextLine()方法可以直接通过你创建的Scanner对象调用,不需要手动调用方法声明里的public java.lang.String nextLine(),那是该方法的官方定义签名,不是实际调用方式。nextLine()会读取从当前光标位置到行末的所有内容(包含空格),正好匹配你的需求。

修改后的代码如下:

import java.util.Scanner;
public class Testjapanese {
    public static void main(String[] args) {
        String x;
        Scanner keyboard = new Scanner(System.in);
        System.out.println(" Add a string");
        // 把next()替换为nextLine()即可
        x = keyboard.nextLine();
        System.out.println(x);
    }
}

额外注意事项

如果后续代码需要混合使用nextInt()、nextDouble()这类返回基本数据类型的方法和nextLine(),需要注意前者不会读取输入末尾的换行符,需要额外调用一次nextLine()吞掉残留的换行符,避免后续nextLine()直接读取到空内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 09:24:01