• Java中next()、nextLine()以及nextInt()


    Java中键盘录入以及小坑

    前言

    java中的键盘录入(通过集成开发工具比如idea的控制台与程序交互),工具类使用的是Scanner。

    public final class Scanner extends Object implements Iterator, Closeable

    正文

    Scanner类的常用方法:

    String next​() 键盘录入任意符号(读取到空格外的有效字符后,回车结束,但只录取空格之前的有效字符)
    String nextLine() 键盘录入一行,回车结束(录入什么就是什么)
    int nextInt() 键盘录入一个整数,回车结束(只要整数,否则报异常)

    使用示例
    创建一个Scanner对象:
    Scanner sc = new Scanner(System.in);
    
    使用next()nextInt()nextLine()方法:
    
    System.out.println("test next");
    String s = sc.next();//键盘录入任意符号(字母、数字、各种符号都可以),回车结束录入(前提是回车前读取到了有效字符)
    System.out.println(s);
    
    System.out.println("test nextInt");
    int s1 = sc.nextInt();//键盘录入一个整数(只要整数,否则报异常,会自动去除空格)
    System.out.println(s1);
    
    System.out.println("test nextLine");
    String s2 = sc.nextLine();//键盘录入一行,回车结束(录入什么输出什么)
    System.out.println(s2);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    测试图例

    nextLine()
    在这里插入图片描述

    nextInt() 只能录入整数,否则报错
    在这里插入图片描述
    在这里插入图片描述

    next()
    在这里插入图片描述

    next()、nextLine()、 nextInt()的区别:

    nextInt(): 这个好理解,只读取int类型的整数,回车表示结束录入。
    nextLine(): 读取一行,内容任意(字母、数字、特殊符号、空格都可以),回车表示结束录入,回车前的内容都会读取。
    next(): 读取空格前的有效字符,回车表示结束录入(只有读取到有效字符后按下回车才表示结束),空格与空格后的字符会被留在内存中。

    next可能有点绕,我总结一下:

    1、当录入的字段开头有空格时,next会自动去除空格,只保留有效字符(非空格);
    2、当读取到有效字符后,如果碰到空格,那么空格与空格后的内容不会被读取;
    3、next的结束录入标志是回车符(前期是他已经读取到有效字符(非空格),如果输入内容一直是空格,那么即便按下回车符,也不会结束录入!!)

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    小坑:

    nextLine() 前面不能出现nextInt()或next()。
    因为nextInt()以回车作为结尾标志且它会把回车符留在内存中,当使用nextInt()录入一个整数按下回车后,整数被nextInt()读取,回车符会留在内存,如果nextInt()后面有nextLine()时,这个回车符便会直接被nextLine()读取。

    如图:录入999后按下回车,回车被nextLine读取了且当作了结束录入的符号,程序终止!
    在这里插入图片描述

    next()方法也是一样的道理,而且next()方法不会读取空格和空格后的内容,所以这些空格和空格后的内容会随着回车符一起被nextLine()读取:

    在这里插入图片描述

  • 相关阅读:
    HTML期末大作业——游戏介绍(HTML+CSS+JavaScript) web前端开发技术 web课程设计网页规划与设计 Web大学生网页成品
    解决:Python在终端通过pip安装好包以后,在Pycharm中依然无法使用的问题
    视频SDK开发,多平台SDK快速接入
    <Redis开发与运维>一书阅读笔记记录
    Docker搭建MySQL主从模式案例
    野火A7学习第三次(组合逻辑相关)
    计算机毕业论文选题java毕业设计软件源代码springMVC+mysql实现进销存系统仓库管理系统[包运行成功]
    Vue学习:插槽
    Redis从入门到精通
    Java面试——13 道数据结构和算法⾯试题
  • 原文地址:https://blog.csdn.net/tuoniaoxs/article/details/125205761