Java獲取鍵盤輸入(使用Scanner類獲取鍵盤輸入)


部分來自《瘋狂Java講義》(第二版)

​ Scanner是一個基於正則表達式的文本掃描器,它可以從文件、數據流、字符串中解析出基本類型值和字符串值。

​ Scanner主要提供兩個方法來掃描輸入:

(1)nextXxx():獲取下一個輸入項。(其中Xxx可以是Int、Long等代表基本數據類型的字符串)

nextInt() 、nextFloat、nextLine、next等等

【例 1】從鍵盤獲取用戶輸入的一個整數(int型) //sc.nextInt();

  Scanner sc = new Scanner(System.in);//System.in代表標准輸入(即鍵盤輸入)	
  int num = sc.nextInt();//獲取輸入的一個整數(只接受int型,如何輸入其他類型將報錯)
  System.out.println(num);

【例 2】獲取一系列的輸入(使用Scanner可以輸入不同的類型) // sc.nextLine(); 和 sc.nextInt(); 和sc.nextFloat();

Scanner sc = new Scanner(System.in);//System.in代表標准輸入(即鍵盤輸入)	
System.out.println("請輸入你的姓名:");
String name = sc.nextLine(); 
	
System.out.println("請輸入你的年齡:");
int age = sc.nextInt();

System.out.println("請輸入你的工資:");
float salary = sc.nextFloat();
	
System.out.println("姓名:"+name+" 年齡:"+age+" 工資:"+salary);

【例 3】Scanner中next()和nextLine()的區別

	Scanner sc = new Scanner(System.in);//System.in代表標准輸入(即鍵盤輸入)
	
	System.out.println("請輸入第一個字符串");
	String s1 = sc.nextLine();
	System.out.println("你輸入的內容為:"+s1+"\n");
	
	System.out.println("請輸入第二個字符串");
	String s2 = sc.next();
	System.out.println("你輸入的內容為:"+s2);

運行效果:

如何改成:

Scanner sc = new Scanner(System.in);//System.in代表標准輸入(即鍵盤輸入)	
	System.out.println("請輸入第一個字符串");
	String s1 = sc.next();
	System.out.println("你輸入的內容為:"+s1+"\n");
	
	System.out.println("請輸入第二個字符串");
	String s2 = sc.nextLine();
	System.out.println("你輸入的內容為:"+s2);

當用戶輸入完第一個字符串之后,程序就已經停止了,也即不能再錄入第二個字符串了!!!

(2)hasNextXxx():是否還有下一個輸入項。如果只是判斷是否包含下一個字符串,則直接使用haxNext()

【例 1】不斷從鍵盤讀取輸入內容,並將每次讀入的內容直接打印出來

	Scanner sc = new Scanner(System.in);//System.in代表標准輸入(即鍵盤輸入)
	
	//sc.hasNext():用來判斷是否包含下一個字符串
	while(sc.hasNext())
	{
		System.out.println("輸入的內容是:"+sc.next());
	}

運行效果:

(3)useDelimiter()的用法——改變Scanner的分隔符

如果希望改變Scanner的分隔符(不使用空格作為分隔符):

為Scanner設置分隔符使用useDelimiter(String pattern)即可,該方法的參數是一個正則表達式。

例如:每次讀入一行,不管這一行中是否包含空格,Scanner都把它當作一個輸入項。在這種需求下,我們可以把Scanner的分隔符設置成回車符(\n),不再使用默認的空白作為分隔符。

	Scanner sc = new Scanner(System.in);//System.in代表標准輸入(即鍵盤輸入)
	//只把回車作為分隔符(即:不管這一行中是否包含空格,Scanner都將它看成一個輸入項)
	sc.useDelimiter("\n");
	String str = sc.next();		
	System.out.println("str="+str);

運行效果:

(4)簡單應用:輸入一行字符(以空格作為分割)給多個變量賦值​

【例1】連續輸入兩個整形數字,並輸出他們的和

	Scanner sc = new Scanner(System.in);//System.in代表標准輸入(即鍵盤輸入)
	
	Integer a = sc.nextInt();//默認以空格作為分隔符
	Integer b = sc.nextInt();
	
	System.out.println(a+b);

運行效果:

【例2】分別輸入一個字符和一個整數,並輸出

	Scanner sc = new Scanner(System.in);
	char ch = sc.next().charAt(0);//獲取用戶輸入的字符
	Integer a = sc.nextInt(); //獲取用戶輸入的整數
	System.out.println("ch="+ch+" a="+a);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM