Java中关于nextInt()、next()和nextLine()
2018-03-29 21:18
357 查看
原博客地址:https://www.cnblogs.com/Skyar/p/5892825.html
Java中关于nextInt()、next()和nextLine()的理解
先看解释: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()、next()和nextLine()的理解
- Java中关于nextInt()、next()和nextLine()的理解
- Java中关于nextInt()、next()和nextLine()的理解
- JAVA学习【5】String数组输入,及nextLine()、nextInt()、next()区别
- java中next(),nextInt()和nextLine()
- Java学习笔记1——关于Scanner类中nextDouble、nextInt、……等方法与nextLine方法联用的问题
- Java中Scanner的nextInt(),next(),nextLine()方法总结
- Java中Scanner的nextInt(),next(),nextLine()方法总结
- 小心:Scanner中关于next()、nextInt()和nextLine()的问题
- 关于java中的Scanner类中的nextLine方法与next方法的区别
- java中的nextInt(),next()和nextLine()
- 关于scanner输入的说明,nextLine、nextInt、next的使用说明、类数组定义的说明
- java问题:不要在nextByte()、nextShort()、nextInt()、nextLong()、nextFloat()、nextDouble()、next()之后使用nextLine()
- Java中Scanner的nextInt(),next(),nextLine()方法总结
- 以OJ2024C语言合法标识符介绍java中Scanner类中nextLine()方法与next()或nextInt()
- Java中Scanner的next和nextLine的使用以及区别
- java中Scanner类nextLine()和next()的区别和使用方法
- java中scanner.nextint和nextline的问题
- java中next()和nextLine()方法的区别
- Java控制台输入Scanner中next和nextLine的区别