官术网_书友最值得收藏!

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()方法試一下,以加深理解。

主站蜘蛛池模板: 闽侯县| 三台县| 张家界市| 阳山县| 永清县| 舒兰市| 花莲市| 阳信县| 乃东县| 衡水市| 甘洛县| 靖边县| 舟山市| 分宜县| 开远市| 温州市| 甘孜| 通城县| 桑日县| 民权县| 葵青区| 永春县| 聊城市| 任丘市| 松江区| 雅安市| 曲阳县| 博白县| 临西县| 怀柔区| 运城市| 池州市| 虎林市| 海兴县| 清涧县| 北流市| 平谷区| 新安县| 盖州市| 霍城县| 常宁市|