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

Java中Scanner读取字符串后无法正常输出问题求助

Scanner读取字符串为空的问题解决方法

问题原因

nextInt()和nextDouble()这类方法只会读取对应类型的数值,不会处理输入末尾的换行符。当你输入整数、浮点数后按下回车,这些换行符会留在输入流里。后续调用nextLine()时,它会直接读取这个换行符作为字符串内容,导致输出的字符串为空。

易懂解决方案(推荐方案一)

方案一:吃掉换行符再读取字符串

在读取浮点数之后,额外调用一次sc.nextLine(),把残留的换行符消耗掉,这样后续的sc.nextLine()就能读取到真正的目标字符串。

修改后的代码:

import java.util.Scanner;

public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        double dr= sc.nextDouble();
        // 消耗掉浮点数后面的换行符
        sc.nextLine();
        String strs = sc.nextLine();
       
        System.out.println("String: " + strs);
        System.out.println("Double: " + dr );
        System.out.println("Int: "+ a);

    }
}

方案二:用next()读取(仅适用于无空格的字符串)

如果你的字符串不包含空格,可以把sc.nextLine()换成sc.next(),但你的目标字符串带有空格,这个方法会只读取到第一个空格(也就是"Welcome"),所以不适合你的场景,仅作补充说明。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 03:54:59