老程序员分享:nextInt和nextLine以及next方法的区别

简介: 老程序员分享:nextInt和nextLine以及next方法的区别

"

最近//代码效果参考:https://v.youku.com/v_show/id_XNjQwNjU4OTc1Mg==.html

在刷算法题的时候,发现如下问题

1 Scanner in = new Scanner(System.in)

2

3 int n = in.nextInt();

4

5 String str = in.nextLine();

在控制台中,输入:

3

hello

发现str的值为空,说明nextLine方法,没有读取到""hello""字符串。

为了解决以上问题,现将控制台输入内容的读取方法总结下。

一、nextInt()

it only reads the int value, nextInt() places the cursor in the same line after reading the input.

  只读取整形的数据,输入读取完之后,将光标放在同一行。

  换句话说,当我们使用该方法时,会将光标放在读取数字后面,并且是同一行。

二、nextLine()

reads input including space between the words (that is, it reads till the end of line \n). Once the input is read, nextLine() positions the cursor in the next line.

  读取空格,直到以'\n'为标志的行尾。一旦输入读取完毕,该方法会将光标移到下一行开始的位置。

三、next()

read the input only till the space. It can't read two words separated by space. Also, next() places the cursor in the same line after reading the input.

  读取输入内容直到遇到空格。它不能读取两个字符之间的空格。同时将光标放在读取输入后面,并且在同一行。

四、实验

  1、实验一

1 public class Test {

2 public static void main(String【】 args) {

3 Scanner in = new Scanner(System.in);

4 int n = in.nextInt();

5 while(n>0){

6 String test = in.nextLine();

7 System.out.println(""test is :""+test );

8 n--;

9 }

10 }

11 }

  查看输入输出:

  解释:

  输入:""2回车""

  输出:""test is :""

  第一步:输入2回车后,in.nextInt()读取整形数字2,并将光标移到""2""和""回车""之间

  第二步:接下来,in.nextLine()将读取”回车""内容,因为在控制台中不能显示,所以其内容为空

  第三步:输入hello后,in.nextLine()方法读取hello方法

  输入:""2 a b回车""

  输出:""test is : a b""

  输入:""hello回车""

  输出:""test is :hello""

  解释:

  第一步:in.nextInt()方法将光标移动到""2""和“空格a空格b回车”之间;

  第二步:in.nextLine()方法读取光标之后的内容,即“空格a空格b回车”

  第三步:输入""hello回车"",in.nextLine()方法读取""hello回车内容"",并输出""this is:hello""

  2、实验二

1 public class Test {

2 public static void main(String【】 args) {

3//代码效果参考:https://v.youku.com/v_show/id_XNjQwMDEzMzQ4OA==.html

Scanner in = new Scanner(System.in);

4 int n = in.nextInt();

5 while(n>0){

6 String test = in.next();

7 System.out.println(""test is :""+test);

8 n--;

9 }

10

11 }

12 }

  解释:

  第一步:in.nextInt将读入的数字初始化给n,现在光标在""2""和""空格a空格b""之间

  第二步:in.next()方法读取光标之后的""空格a"",因为next()不能读取空格,所以遇到第二个空格就停止读取,第一个空格被忽略。此时光标在第二个空格之前

  第三步:读入b


"
image.png
相关文章
|
4月前
|
安全 Java API
【Java字符串操作秘籍】StringBuffer与StringBuilder的终极对决!
【8月更文挑战第25天】在Java中处理字符串时,经常需要修改字符串,但由于`String`对象的不可变性,频繁修改会导致内存浪费和性能下降。为此,Java提供了`StringBuffer`和`StringBuilder`两个类来操作可变字符串序列。`StringBuffer`是线程安全的,适用于多线程环境,但性能略低;`StringBuilder`非线程安全,但在单线程环境中性能更优。两者基本用法相似,通过`append`等方法构建和修改字符串。
74 1
|
7月前
|
Java 编译器
【Java开发指南 | 第二十六篇】Java多态
【Java开发指南 | 第二十六篇】Java多态
38 1
|
2月前
|
Java 调度
【多线程-从零开始-贰】线程的构造方法和常见属性
【多线程-从零开始-贰】线程的构造方法和常见属性
20 0
|
4月前
|
缓存 安全 Java
【揭秘】String vs StringBuilder vs StringBuffer:三大字符串类的秘密较量!你真的知道何时该用哪个吗?
【8月更文挑战第19天】探讨Java中`String`、`StringBuilder`与`StringBuffer`的区别及应用场景。`String`不可变,适合做哈希表键或多线程共享。`StringBuilder`支持动态修改字符串,适用于单线程环境以提高性能。`StringBuffer`与`StringBuilder`功能相似,但线程安全。示例代码展示各类型的基本用法。选择哪种类型取决于具体需求和性能考量。
59 0
|
6月前
|
小程序 Java
28. 【Java教程】Scanner 类
28. 【Java教程】Scanner 类
130 7
|
7月前
|
存储 算法 安全
【数据结构与算法初学者指南】【冲击蓝桥篇】String与StringBuilder的区别和用法
【数据结构与算法初学者指南】【冲击蓝桥篇】String与StringBuilder的区别和用法
为什么String要被设置为不可变类?百日百题(2/100
为什么String要被设置为不可变类?百日百题(2/100
|
存储 安全 算法
《我要进大厂》- Java集合夺命连环13问,你能坚持到第几问?(Map | Collections)
《我要进大厂》- Java集合夺命连环13问,你能坚持到第几问?(Map | Collections)
《我要进大厂》- Java集合夺命连环13问,你能坚持到第几问?(Map | Collections)
|
存储 安全 算法
《我要进大厂》- Java基础夺命连环14问,你能坚持到第几问?(Object类 | String类)(一)
《我要进大厂》- Java基础夺命连环14问,你能坚持到第几问?(Object类 | String类)
《我要进大厂》- Java基础夺命连环14问,你能坚持到第几问?(Object类 | String类)(一)
next 与 nextLine 方法的区别
next 与 nextLine 方法的区别
346 0
next 与 nextLine 方法的区别