next、nextInt、nextDouble、nextFloat和nextLine的区别。
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的区别。相关推荐
- java里的nextint_「nextint」Java中关于nextInt()、next()和nextLine()的区别 - 金橙教程网...
nextint 先看解释: nextInt(): it only reads the int value, nextInt() places the cursor in the same line a ...
- 关于java中next,nextInt,nextLine的区别
https://blog.csdn.net/qq_35038153/article/details/79577464 Java中关于nextInt().next()和nextLine()的理解 先看解 ...
- java nextint括号_Java中关于nextInt()、next()和nextLine()的理解
先看解释: nextInt(): it only reads the int value, nextInt() places the cursor in the same line after rea ...
- Java中的nextInt()和next()与nextLine()区别详解
首先的一个区别是: nextInt()读取结果为一个int类型数据,返回int值 nextFloat()读取结果为float类型,返回float值 next()读取结果为String类型,返回stri ...
- next()和nextLine()的区别
众所周知,在Java中输入字符串有两种方法,就是next()和nextLine(),今天研究了一下其中的区别. 首先,nextLine()的输入是碰到回车就终止输入,而next()方法是碰到空格,回车 ...
- Next() Nextline() hasNext()区别
next类和hasNext方法遇到缓冲区没数据时,会阻塞,等待输入后next类会读取,hasNext会返回true 1)nextLine nextLine()方法返回的是"\n"之 ...
- java中next()和nextline()用法区别(详细说明)
java中next和nextline用法区别 一,方法说明 二,空格的情况(tab键相当于多个空个 1.测试代码 2.中间出现空格时 3.开头出现空格时 三,回车键的情况 分析:回车键的情况 四,常见 ...
- Java中next()和nextLine()的区别(为什么nextLine()输入回车没显示)
前言 博主个人社区:开发与算法学习社区 博主个人主页:Killing Vibe的博客 欢迎大家加入,一起交流学习~~ 一.问题描述: 前几天遇到了一个小问题:为了简化,我手打了一段简单的代码,如下: ...
- next和nextLine的区别
next和nextLine的区别 使用扫描器Scanner时,遇到了字符串一般会使用next()和nextLine()方法.Scanner类中的方法next()和nextLine()都是读入输入的字符 ...
最新文章
- 服务器销售全国第一国内领先,浪潮服务器首季保持国内品牌第一
- Matlab命令集--常用字符串函数
- CyclicBarrier-同步辅助类
- git学习资料及心得
- 菜鸟涂鸦作品展_No.1
- windows下安装,配置gcc编译器
- 与其埋头啃文献不如关注这些公众号
- w10计算机管理员权限解除,win10系统取消管理员身份运行图标的详细步骤
- 史上最贵的merge代码,新浪程序员因加班错失年会77万大奖!
- 833 计算机专业基础综合,西安电子科技大学833计算机专业基础综合2021年硕士研究生招生考试自命题科目考试大纲...
- 第二周:java异常和常用类 容器
- jq操作数组的常用方法
- scala将csv转换成insert语句
- Charles的基本使用方法
- YOLOv5+BiSeNet——同时进行目标检测和语义分割
- 互联网公司技术总监工作内容
- 【FreeRTOS】队列管理
- 自考法律专业可以考律师证吗?
- 判断滚动条是上滑还是下滑
- i春秋之SQL(详细WP)