先看解释:

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

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.

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.

看完之后nextInt()、next()和nextLine()的区别已经很清楚了,我觉得最容易出错的就是cursor问题。

看下面代码:

1 import java.util.Scanner;

2

3 public class MaxMap {

4 public static void main(String[] args){

5 Scanner cin = new Scanner(System.in);

6 int n = cin.nextInt();

7 String str = cin.nextLine();

8 System.out.println("END");

9 }

10 }

执行后结果:

从执行结果上看,貌似直接跳过了String str = cin.nextLine();这行代码。

其实不然,原因是:nextInt()只读取数值,剩下"\n"还没有读取,并将cursor放在本行中。nextLine()会读取"\n",并结束(nextLine() reads till the end of line \n)。

如果想要在nextInt()后读取一行,就得在nextInt()之后额外加上cin.nextLine(),代码如下

import java.util.Scanner;

public class MaxMap {

public static void main(String[] args){

Scanner cin = new Scanner(System.in);

int n = cin.nextInt();

cin.nextLine();

String str = cin.nextLine();

System.out.println("END");

}

}

在看下面代码:

1 import java.util.Scanner;

2

3 public class MaxMap {

4 public static void main(String[] args){

5 Scanner cin = new Scanner(System.in);

6 String n = cin.next();

7 //cin.nextLine();

8 String str = cin.nextLine();

9 System.out.println("END");

10 System.out.println("next()read:"+n);

11 System.out.println("nextLine()read:"+str);

12 }

13 }

执行结果:

原因:next()只读空格之前的数据,并且cursor指向本行,后面的nextLine()会继续读取前面留下的数据。

想要读取整行,就是用nextLine()。

读取数字也可以使用nextLine(),不过需要转换:Integer.parseInt(cin.nextLine())。

注意在next()、nextInt()与nextLine()一起使用时,next()、nextInt()往往会读取部分数据(会留下"\n"或者空格之后的数据)。

java nextint括号_Java中关于nextInt()、next()和nextLine()的理解相关推荐

  1. java 数据类型分为_JAVA中分为基本数据类型及引用数据类型

    byte:Java中最小的数据类型,在内存中占8位(bit),即1个字节,取值范围-128~127,默认值0 short:短整型,在内存中占16位,即2个字节,取值范围-32768~32717,默认值 ...

  2. java mod %区别_Java中 % 与Math.floorMod() 区别详解

    %为取余(rem),Math.floorMod()为取模(mod) 取余取模有什么区别呢? 对于整型数a,b来说,取模运算或者取余运算的方法都是: 1.求 整数商: c = a/b; 2.计算模或者余 ...

  3. java 静态分派_Java中的静态分派与动态分派

    本文是<深入理解Java虚拟机>8.3.2节的读书笔记,理解有误的地方,欢迎指正 首先是两个概念: 静态类型,即是变量声明时的类型. 实际类型,变量实例化时采用的类型. 比如我们有这样一段 ...

  4. java show过时_Java中show() 方法被那个方法代替了? java编程 显示类中信

    你说的show是swing里的吧,在老版本中Component这个超类确实有show这个方法,而且这个方法也相当有用,使一个窗口可见,并放到最前面.在jdk5.0中阻止了这个方法,普遍用setVisi ...

  5. java判断类型_Java中类型判断的几种方式 - 码农小胖哥 - 博客园

    1. 前言 在Java这种强类型语言中类型转换.类型判断是经常遇到的.今天就细数一下Java中类型判断的方法方式. 2. instanceof instanceof是Java的一个运算符,用来判断一个 ...

  6. java 序列化实例_Java中的序列化与反序列化实例

    创建的字节流与平台无关.因此,在一个平台上序列化的对象可以在另一个平台上反序列化. 为了使Java对象可序列化,我们实现java.io.Serializable可序列化接口. ObjectOutput ...

  7. java 代码锁_Java中的Lock锁

    Lock锁介绍: 在java中可以使用 synchronized 来实现多线程下对象的同步访问,为了获得更加灵活使用场景.高效的性能,java还提供了Lock接口及其实现类ReentrantLock和 ...

  8. java wait 参数_java中wait()和join()方法的区别是什么

    java中wait()和join()方法的区别是:存在不同的java包中:wait()方法用于线程间通信,它所施加的等待状态的线程可以被启动:join()方法用于在多个线程之间添加排序,它所施加的等待 ...

  9. java thread join()_Java中Thread.join()的使用方法

    概要 本文分三个部分对thread.join()进行分析: 1. join() 的示例和作用 2. join() 源码分析 3. 对网上其他分析 join() 的文章提出疑问 1. join() 的示 ...

最新文章

  1. 从OpenAI看深度学习研究前沿
  2. VM结构、GC工作机制详解
  3. 树莓派.系统.官方下载中NOOBS和Raspbian的区别
  4. Linuxamp;nbsp;shell中的竖线(|)——…
  5. BZOJ 1012 最大数
  6. RGB和RGBQUAD的区别
  7. linux so 库的生成与调用
  8. RFC:Request For Comments
  9. %1$s %1$d Android string
  10. leetcode python3 简单题225. Implement Stack using Queues
  11. 在 jquery repeater 中添加设置日期,下拉,复选框等控件
  12. 计算机无法检测电池损耗怎么办,笔记本电脑电池损耗怎么修复 笔记本电脑电池损耗修复方法...
  13. UrU4000B指纹仪驱动
  14. android 糖果条纹进度条,小破站别出心裁,咒术回战进度条是高专纽扣,堀与宫村是糖果...
  15. 禾瘦美学馆告诉你女人为什么得有曲线?
  16. Oracle Data Pump Schema 方式导入导出
  17. 360路由器远程连接服务器,360路由器如何开启端口映射?
  18. ISR:中断服务程序(interrupt service routine)
  19. Java分别采用继承、多态、抽象类、接口实现猫和狗的入门案例
  20. Flutter 项目实战 Dio网络请求 四

热门文章

  1. UML 的九种模型图.UML用例图.ER图.UML项目结构图总结
  2. struct timeval 和 struct timespec
  3. Java编程教程大全
  4. Pylint静态代码检查使用指南
  5. PCL点云库 点云拼接
  6. required android.app.fragment,required:'android.app.Fragment'
  7. sqlserver 设置成可用本地ip进行登陆
  8. 通过swiper插件制作旋转木马轮播图
  9. MRO工业品有什么特点
  10. vscode使用指南:进入全屏退出全屏模式