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.