next类似于nextInt(只能输入整数)、nextDouble(只能输入双精度浮点数),可以输入任意类型的值。

有几段话对这个的总结比较好,我们先看一下这几段,再总结:

首先,next()一定要读取到有效字符后才可以结束输入,对输入有效字符之前遇到的空格键、Tab键或Enter键等结束符,next()方法会自动将其去掉,只有在输入有效字符之后,next()方法才将其后输入的空格键、Tab键或Enter键等视为分隔符或结束符。简单地说,next()查找并返回来自此扫描器的下一个完整标记。完整标记的前后是与分隔模式匹配的输入信息,所以next方法不能得到带空格的字符串而nextLine()方法的结束符只是Enter键,即nextLine()方法返回的是Enter键之前的所有字符,它是可以得到带空格的字符串的。

nextInt()方法会读取下一个int型标志的token.但是焦点不会移动到下一行,仍然处在这一行上。当使用nextLine()方法时会读取改行剩余的所有的内容,包括换行符,然后把焦点移动到下一行的开头。所以这样就无法接收到下一行输入的String类型的变量。

next()方法的工作原理:( 肤浅的说)

从一行中扫描,直到碰到特定的标识符:空格或是换行符(\n),获取其前的字符(串)。

看这里,第一个next()方法读入了“ni掌柜”,但并没有读入"\n",也不负责换行,然后就把 "\n"丢给了nextLine()处理,

你也知道的,nextLine()属于那种“见钱眼开”,看见“\n”就收了,然后扫描了 \n 之前的内容,也就是空字符串。于是出现问题了。

如:

package niuke;
import java.util.*;

public class StringSorting {
public static void main(String[] args){
        Scanner scan = new Scanner(System.in);
        while(scan.hasNext()){
            int number = scan.nextInt();
            String[] str = new String[number];
            for(int i=0;i<number;i++){
                str[i] = scan.nextLine();(若此处为scan.nextLine(),假如由scan.nextInt()输入的number是9,总会只允许输入8次,就开始执行代码,一直搞不清楚问题出现在哪里,后来,发现,当输入9时,scan.nextInt()会跳过从键盘输入的值,假如其下面又有一句代码,则会执行下一句代码。这个问题,代码后面分析。正确的是将此句换为scan.next();即可。)
            }
            Arrays.sort(str);
            for(int j=0;j<str.length;j++){
                System.out.println(str[j]);
            }
        }
    }
}

由此,我们将对红字部分出现的问题进行分析:首先我们需要弄清nextInt的工作原理:

nextInt表示输入的需要是整数,在输入整数之前,输入的空格、Tab或者\n(换行符)统统忽略掉,一旦输入有效的整数之后,再输入空格、Tab或者\n就会将此字符之前的有效的整数提取出来,光标停留在本行。

nextLine进行输入时,看到\n会直接当作自己的输入,并以\n作为输入结束的标志,所以默认不让用户输入啦,然后把光标移到下一行的开头。

举例说明:

比如我们用scan.nextInt()输入9,输入回车键,此时9\n,会把9赋给number,\n留下,再输入scan.nextLine()时,以\n作为结束符,直接到下一行开头。若再次输入的是scan.next(),就会忽略掉\n,输入122\n,会把122再次赋给另外一个新的变量值。

至此,我们有关next、nextInt等和nextLine的分析结束。

next、nextInt、nextDouble、nextFloat和nextLine的区别。相关推荐

  1. java里的nextint_「nextint」Java中关于nextInt()、next()和nextLine()的区别 - 金橙教程网...

    nextint 先看解释: nextInt(): it only reads the int value, nextInt() places the cursor in the same line a ...

  2. 关于java中next,nextInt,nextLine的区别

    https://blog.csdn.net/qq_35038153/article/details/79577464 Java中关于nextInt().next()和nextLine()的理解 先看解 ...

  3. java nextint括号_Java中关于nextInt()、next()和nextLine()的理解

    先看解释: nextInt(): it only reads the int value, nextInt() places the cursor in the same line after rea ...

  4. Java中的nextInt()和next()与nextLine()区别详解

    首先的一个区别是: nextInt()读取结果为一个int类型数据,返回int值 nextFloat()读取结果为float类型,返回float值 next()读取结果为String类型,返回stri ...

  5. next()和nextLine()的区别

    众所周知,在Java中输入字符串有两种方法,就是next()和nextLine(),今天研究了一下其中的区别. 首先,nextLine()的输入是碰到回车就终止输入,而next()方法是碰到空格,回车 ...

  6. Next() Nextline() hasNext()区别

    next类和hasNext方法遇到缓冲区没数据时,会阻塞,等待输入后next类会读取,hasNext会返回true 1)nextLine nextLine()方法返回的是"\n"之 ...

  7. java中next()和nextline()用法区别(详细说明)

    java中next和nextline用法区别 一,方法说明 二,空格的情况(tab键相当于多个空个 1.测试代码 2.中间出现空格时 3.开头出现空格时 三,回车键的情况 分析:回车键的情况 四,常见 ...

  8. Java中next()和nextLine()的区别(为什么nextLine()输入回车没显示)

    前言 博主个人社区:开发与算法学习社区 博主个人主页:Killing Vibe的博客 欢迎大家加入,一起交流学习~~ 一.问题描述: 前几天遇到了一个小问题:为了简化,我手打了一段简单的代码,如下: ...

  9. next和nextLine的区别

    next和nextLine的区别 使用扫描器Scanner时,遇到了字符串一般会使用next()和nextLine()方法.Scanner类中的方法next()和nextLine()都是读入输入的字符 ...

最新文章

  1. 服务器销售全国第一国内领先,浪潮服务器首季保持国内品牌第一
  2. Matlab命令集--常用字符串函数
  3. CyclicBarrier-同步辅助类
  4. git学习资料及心得
  5. 菜鸟涂鸦作品展_No.1
  6. windows下安装,配置gcc编译器
  7. 与其埋头啃文献不如关注这些公众号
  8. w10计算机管理员权限解除,win10系统取消管理员身份运行图标的详细步骤
  9. 史上最贵的merge代码,新浪程序员因加班错失年会77万大奖!
  10. 833 计算机专业基础综合,西安电子科技大学833计算机专业基础综合2021年硕士研究生招生考试自命题科目考试大纲...
  11. 第二周:java异常和常用类 容器
  12. jq操作数组的常用方法
  13. scala将csv转换成insert语句
  14. Charles的基本使用方法
  15. YOLOv5+BiSeNet——同时进行目标检测和语义分割
  16. 互联网公司技术总监工作内容
  17. 【FreeRTOS】队列管理
  18. 自考法律专业可以考律师证吗?
  19. 判断滚动条是上滑还是下滑
  20. i春秋之SQL(详细WP)

热门文章

  1. java借助Robot给微信好友自动发消息(可发送表情包)
  2. Android阅读器放大镜
  3. 信息安全标准ISO27000
  4. canvas 菜鸟入门笔记
  5. QT5开发之 信号与槽机制
  6. 大数据同步工具Canal
  7. 项目经理应具备的关键能力
  8. Java利用二分法开根号
  9. 1080P、720P、4CIF、CIF所需要的理论带宽和工程中实际带宽及存储容量
  10. 软考软件设计师下午真题-面向对象的程序设计与实现-生成器设计模式(2018年上半年试题六))Java代码讲解