Java的next()和nextLine()

0.next和nextLine是Scanner類中的兩個方法。java

 

1.next方法只接收有效字符。在遇到有效字符以前,輸入的空格鍵,Enter鍵和Tab鍵等鍵,next方法都會忽略掉它們。遇到有效字符後,則遇到這些鍵退出。spa

:class

import java.util.*;
public class ITest1
{
  public static void main(String[] args)
  {
    Scanner in=new Scanner(System.in);
    String text1=in.next();
    String text2=in.next();
    System.out.println("*"+text1+"*"+text2+"*");
  }
}import

輸入:Tab鍵AB空格鍵空格鍵CD空格鍵Enter鍵方法

輸出:*AB*CD*im

 

2.nextLine方法的結束符只是Enter鍵,即nextLine方法返回的是在輸入Enter鍵以前的全部內容。next

:  static

import java.util.*;
public class ITest2
{
  public static void main(String[] args)
  {
    Scanner in=new Scanner(System.in);
    String text=in.nextLine();
    System.out.println("*"+text+"*");
  }
}word

輸入:AB空格鍵CDEnter鍵鍵盤

輸出:*AB CD*

 

3.next和nextLine方法連用

:

import java.util.*;
public class ITest3
{
  public static void main(String[] args) 
  {

    Scanner in=new Scanner(System.in);
    String text1=in.nextLine();
    String text2=in.next();
    System.out.println(text1);
    System.out.println(text2);

 

  }
}

輸入:Tom and JerryEnter鍵cartoonEnter鍵

輸出:Tom and Jery

   cartoon

可是若是交換next和nextLine的順序

:

import java.util.*;
public class ITest4
{
  

public static void main(String[] args)
  {
    Scanner in=new Scanner(System.in);
    System.out.println("Enter first word");
    String text1=in.next();
    System.out.println("Enter second word");
    String text2=in.nextLine();
    System.out.println(text1+"*"+text2);
  }

}

 

輸入1:

Enter first word

my name isEnter鍵

輸出1:

Enter second word

my* name is

 

輸入2:

Enter first word

myEnter鍵

輸出2:

Enter second word

my*

爲何會出現這種錯誤呢?

 前面說過,next在讀取到了有效字符(my)以後,天然地將後面出現的Enter鍵視爲結束符。可是後面的nextLine方法讀取了有效字符my以後的全部字符包括Enter鍵(即nextLine把輸入給next的Enter鍵看成了它本身的結束符)。所以,在輸入1中,nextLine讀取了 name isEnter鍵;在輸入2中,nextLine讀取了Enter鍵。因此Text2沒法從鍵盤上得到輸入值。

不只是next方法,nextInt、nextDouble等方法與nextLine方法連用時都會產生這種問題。但nextLine和nextLine連用時不會出現這種問題。

解決方法:

能夠在next方法後再加入一個nextLine方法,讓它讀取掉輸入給next的Enter鍵,這樣下一個nextLine就能夠從鍵盤上獲得輸入的內容。

import java.util.*;
public class ITest4
{

public static void main(String[] args) 
  {

    Scanner in=new Scanner(System.in);
    System.out.println("Enter first word");
    String text1=in.next();
    in.nextLine();
    System.out.println("Enter second word");
    String text2=in.nextLine();
    System.out.println(text1+"*"+text2);

  }

}

輸入:

Enter first word

My name isEnter鍵

Enter second word

age is 30.Enter鍵

輸出:My*age is 30.

相關文章
相關標籤/搜索