使用Scanner獲取鍵盤輸入 (轉)

 

原文地址:https://www.cnblogs.com/SzBlog/p/5404335.htmlhtml

後面有改動java

 

使用Scanner類能夠很方便地便獲取用戶的鍵盤輸入,Scanner是一個基於正則表達式的文本掃描器,它能夠從文件、輸入流 、字符串中解析出基本類型值和字符串值。Scanner類提供了多個構造器,不一樣的構造器可接受文件、輸入流、字符串做爲數據,用於從文件、輸入流、字符串中解析數據。正則表達式

        Scanner主要提供了兩個方法來掃描輸入:編程

(1)   hasNextXxx():是否還有下一個輸入項,其中Xxx能夠是Int、Long等表明基本數據類型的字符串。若是須要判斷是否包含下一個字符串,能夠省略Xxx.spa

(2)   nextXxx():獲取下一個輸入項。Xxx的含義與前一個方法中Xxx相同。code

        在默認狀況下,Scanner使用空白(包括空格、Tab空白、回車)做爲多個輸入項之間的分隔符。看下面的程序使用Scanner來得到用戶的鍵盤輸入。htm

public class TestScannerKeyBoard
{
 public static void main(String[] args)
 {
  //System.in表明標準輸入,就是鍵盤輸入
  Scanner sc=new Scanner(System.in);
  //Scanner使用useDelimiter(String pattern)方法設置分隔符。下面設置使用回車做爲分隔符,
  //程序每次讀取一行,無論這一行是否包含空格,Scanner都把它當成一個輸入項
  //sc.useDelimiter("\n");

  //判斷是否還有下一個輸入項
  while(sc.hasNext())
  {       
   //輸出輸入項
   System.out.println("鍵盤輸入內容是:"+sc.next());
  }
 }
}
運行上面程序,程序經過Scanner不斷從鍵盤讀取鍵盤輸入,每次讀到鍵盤輸入,直接將輸入內容打印在控制檯。
事實上,Scanner提供了兩個簡單的方法來逐行讀取:
   (1) boolean hasNextLine():返回輸入源中是否還有下一行。
   (2)String nextLine():返回輸入源中的下一行的字符串。
 Scanner不只能夠獲取字符串輸入項,也能夠獲取任何類型的輸入項。

在實現字符窗口的輸入時,不少人更喜歡選擇使用掃描器Scanner,它操做起來比較簡單。在編程的過程當中,我發現用Scanner實現字符串的輸入有兩種方法,一種是next(),一種nextLine(),可是這兩種方法究竟有什麼區別呢?我查了一些資料總結了一下,但願對你們有所幫助~
        

      next()必定要讀取到有效字符後才能夠結束輸入,對輸入有效字符以前遇到的空格鍵、Tab鍵或Enter鍵等結束符,next()方法會自動將其去掉,只有在輸入有效字符以後,next()方法纔將其後輸入的空格鍵、Tab鍵或Enter鍵等視爲分隔符或結束符。

        簡單地說,next()查找並返回來自此掃描器的下一個完整標記。完整標記的先後是與分隔模式匹配的輸入信息,因此next方法不能獲得帶空格的字符串。

        而nextLine()方法的結束符只是Enter鍵,即nextLine()方法返回的是Enter鍵以前的全部字符,它是能夠獲得帶空格的字符串的。

鑑於以上兩種方法的只要區別,必定要注意next()方法和nextLine()方法的連用,舉個例子:

<span style="font-family:FangSong_GB2312;">im</span>port java.util.Scanner;

public class NextTest{
	public static void main(String[] args) {

		String s1,s2;

		Scanner sc=new Scanner(System.in);

		System.out.print("請輸入第一個字符串:");

		s1=sc.nextLine();

		System.out.print("請輸入第二個字符串:");

		s2=sc.next();

		System.out.println("輸入的字符串是:"+s1+" "+s2);

	}
}

  運行結果:
請輸入第一個字符串:home
請輸入第二個字符串:workblog

輸入的字符串是:home wor字符串

相關文章
相關標籤/搜索