天天看點

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"或者空格之後的資料)。