为什么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
相关产品推荐
相关产品推荐

