- Java程序設計基礎(chǔ)(第6版)
- 陳國君主編
- 1989字
- 2019-07-01 10:11:01
3.6 由鍵盤輸入數(shù)據(jù)
在程序設計中,經(jīng)常需要從鍵盤上讀取數(shù)據(jù),這時就需要用戶從鍵盤輸入數(shù)據(jù),從而可以增加與用戶之間的交互。利用鍵盤輸入數(shù)據(jù),Java語言提供了兩種方式。
數(shù)據(jù)輸入方式1:利用鍵盤輸入數(shù)據(jù)。其基本格式如下:

這個輸入數(shù)據(jù)的基本結(jié)構(gòu)是固定的格式,其中有關(guān)輸入語句的功能將在第10章介紹。
該格式由鍵盤輸入的數(shù)據(jù),不管是文字還是數(shù)字,Java皆視為字符串,因此若是要由鍵盤輸入數(shù)值則需要利用表3.7中的方法進行相應類型轉(zhuǎn)換。該數(shù)據(jù)輸入格式中的相應語句也可寫成如下格式,其作用完全相同。


這種格式中的“str=buf.readLine();”語句是利用buf調(diào)用readLine()方法將從鍵盤上讀取的數(shù)據(jù)均作為字符串來處理,當然也可以利用read()方法從鍵盤上讀取單個的字符型數(shù)據(jù)。如設c是定義成char型的變量,則“c=(char)buf.read();”語句將是從鍵盤上讀取一個字符,賦給字符型變量c。
下面舉例說明如何由鍵盤輸入文字、數(shù)字以及兩個以上的數(shù)據(jù)。
1.輸入字符串
從鍵盤輸入的所有文字、數(shù)字,Java皆視為字符串,因此程序在處理上很簡單,只要將輸入的內(nèi)容賦值給一個字符串型變量即可。
【例3.3】 從鍵盤輸入數(shù)據(jù)。

程序運行結(jié)果為:
請輸入字符串:Java語言程序設計↙
您輸入的字符串是:Java語言程序設計
說明:其中加有下畫線的內(nèi)容是用戶從鍵盤輸入的內(nèi)容,斜箭頭號表示回車符,下同。
在程序中,第2行的import命令類似于C/C++語言里的#include,而“import java.io.?;”則是加載java.io類庫里的所有類,以供后面的程序代碼使用(程序中的IOException、InputStreamReader與BufferedReader類均屬于該類庫)。第10行System.out.print()語句的功能與System.out.println()語句的功能基本相同,也是輸出括號中的數(shù)據(jù),但其不同的是該語句輸出數(shù)據(jù)后不換行。當程序運行到第11行時,會等待用戶輸入數(shù)據(jù),輸入完畢后按Enter鍵,所輸入的內(nèi)容賦給字符串變量str。字符串變量的名稱可以是任何合法的Java標識符。
說明:若將該程序的第8行改為“char str;”,第11行改為“str=(char)buf.read();”,則該程序只從鍵盤上讀取一個字符,然后輸出。
2.輸入數(shù)值
由于從鍵盤輸入的數(shù)據(jù)均被視為字符串,所以若想從鍵盤上輸入數(shù)值型數(shù)據(jù),必須先利用表3.7中所提供的方法進行類型轉(zhuǎn)換后,字符串的內(nèi)容才會變成數(shù)值。
【例3.4】 從鍵盤輸入數(shù)字,然后將其轉(zhuǎn)換成數(shù)值型數(shù)據(jù)。

程序運行結(jié)果為:
請輸入一個實數(shù):32.58↙
您輸入的數(shù)為:32.58
程序中的第13行語句是利用parseFloat()方法將從鍵盤輸入的數(shù)據(jù),轉(zhuǎn)換為浮點型數(shù)據(jù)。
3.輸入多個數(shù)據(jù)
對于多個數(shù)據(jù)的輸入與單個數(shù)據(jù)的輸入基本相同,下面是從鍵盤輸入兩個整數(shù),然后將其相乘后的結(jié)果輸出到顯示器上。
【例3.5】 從鍵盤輸入多個數(shù)據(jù)。

請輸入第一個數(shù):3↙ 請輸入第二個數(shù):6↙ 3?6=18
程序中的第14、15行為第一個數(shù)的輸入,第17、18行為第二個數(shù)的輸入,再賦給適當?shù)淖兞棵坝孟鄳霓D(zhuǎn)換方法進行類型轉(zhuǎn)換即可。
數(shù)據(jù)輸入方式2:為了簡化輸入操作,從Java SE 5版本開始在java.util類庫中新增了一個專門用于輸入操作的類Scanner,可以使用該類創(chuàng)建一個對象,然后利用該對象調(diào)用相應的方法,從鍵盤上讀取數(shù)據(jù)。語句格式如下:

Java使用System.out表示標準的輸出設備,而用System.in表示標準輸入設備。默認情況下,標準輸出設備是顯示器,而標準輸入設備是鍵盤。為了完成控制臺(DOS)輸出,只需使用println()方法就可以在控制臺上顯示輸出字符串。Java并不直接支持控制臺輸入,但可以使用Scanner類創(chuàng)建它的對象,以讀取來自System.in的輸入,如“Scanner reader=new Scanner(System.in);”。
在上面的語法結(jié)構(gòu)中用創(chuàng)建的reader對象調(diào)用nextDouble()方法來讀取用戶從鍵盤上輸入的double型數(shù)據(jù),也可用reader對象調(diào)用下列方法,讀取用戶在鍵盤上輸入的相應類型的數(shù)據(jù):nextByte(),nextDouble(),nextFloat(),nextInt(),nextLong(),nextShort(),next(),nextLine()。
上述的nextXXX()方法被調(diào)用后,則等待用戶從鍵盤上輸入數(shù)據(jù)并按Enter鍵(或空格鍵、Tab鍵)確認。在從鍵盤上輸入數(shù)據(jù)時,通常的做法是讓reader對象先調(diào)用hasNextXXX()方法判斷用戶在鍵盤上輸入的是否是相應類型的數(shù)據(jù),然后再調(diào)用nextXXX()方法讀取數(shù)據(jù)。例如,用戶在鍵盤上輸入123.45后按Enter鍵,hasNextFloat()的值為true,而hasNextInt()的值為false。next()或nextLine()方法被調(diào)用后,則等待用戶在鍵盤上輸入一行文本,即字符串,這兩個方法返回一個String類型的數(shù)據(jù),String類型將在5.5節(jié)討論。
下面舉一個簡單的例子,來說明該語句的用法,該語句的其他用法在4.4節(jié)講述循環(huán)語句時詳細介紹。
【例3.6】 利用Scanner類從鍵盤輸入多個數(shù)據(jù)。

程序運行結(jié)果如下:
請輸入第一個數(shù):5↙ 請輸入第二個數(shù):8↙ 5?8.0=40.0
【例3.7】 利用Scanner類,使用next()和nextLine()方法接收從鍵盤輸入字符串型數(shù)據(jù)。

程序運行結(jié)果如下:
請輸入第一個數(shù)據(jù):abc↙ 請輸入第二個數(shù)據(jù):xyz↙ 輸入的是abc和xyz
說明:next()方法一定要讀取到有效字符后才可以結(jié)束輸入,對輸入有效字符之前遇到的空格鍵、Tab鍵或Enter鍵等,next()方法會自動將其去掉,只有在輸入有效字符之后,next()方法才將其后輸入的空格鍵、Tab鍵或Enter鍵視為分隔符或結(jié)束符;而nextLine()方法的結(jié)束符只是Enter鍵,即nextLine()方法返回的是Enter鍵之前的所有字符??梢詫⒗?.7中的第10行改為調(diào)用next()方法,而把第12行改為調(diào)用nextLine()方法試一下,以加深理解。
- Advanced Splunk
- 軟件項目估算
- Java Web開發(fā)學習手冊
- FreeSWITCH 1.8
- Apache Spark 2.x Machine Learning Cookbook
- 算法精粹:經(jīng)典計算機科學問題的Java實現(xiàn)
- 實戰(zhàn)Java程序設計
- 跟小海龜學Python
- React.js Essentials
- 深入淺出DPDK
- 重學Java設計模式
- Learning Unity 2D Game Development by Example
- Instant Ext.NET Application Development
- 深入實踐Kotlin元編程
- Python一行流:像專家一樣寫代碼