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

2.3 基本輸入與輸出語句

2.3.1 基本輸出語句

如果需要將常量、變量或表達式的值顯示輸出,可以利用System.out.print()方法與System.out.println()方法,這兩個方法的功能基本相同。兩者的區別是在輸出指定內容之后,前者將光標停留在輸出內容的后面,而后者將光標移到下一行的開始位置。

【例2-2】輸出語句的初步運用。

【程序】

【運行結果】

【程序說明】

System.out.print()方法與System.out.println()方法都只能輸出一項內容,如果希望輸出多項內容,則需要用拼接運算符(+)將多項內容拼接成一項。

以語句“System.out.println("a=" + a + ",b=" + b)”為例,為了輸出了"a="、a、",b="和b這4項內容,利用運算符“+”自左向右逐步拼接:

"a=" + a的結果為"a=2";

"a=" + a + ",b="的結果為"a=2,b=";

"a=" + a + ",b="+b的結果為"a=2,b=3"。

如果運算符“+”兩邊的運算對象有一個是字符串,則實現拼接操作;如果運算符“+”兩邊的運算對象都是數值,則進行加法操作,所以a+b的值為5。

雖然上述兩個方法可以實現數據輸出,但控制輸出格式是一個比較棘手的問題。為此,Java語言從JDK 1.5版本開始,提供了更加方便的System.out.printf()方法,該方法既可以控制數據輸出的格式,也可以方便地輸出多項。其一般形式是:

格式控制字符串可以包含格式控制符和普通字符,普通字符將按原樣輸出,而格式控制符用于指定對應表達式的格式。表2-6列出了常用格式控制符及其含義。

表2-6 格式控制符

1.整型數據的格式控制

例如,若有“int a=2,b= 3”,則語句“System.out.printf("a=%d, b=%d", a, b)”輸出“a=2,b=3”。

在格式控制字符串中,兩個“%d”稱為格式控制符,分別用于指定后面a和b兩個表達式的值將以十進制整數形式輸出。格式控制字符串中的其他字符,如“a=,b=”將以字符方式直接輸出。

輸出格式控制符中,可以指定整數數據的輸出寬度。

例如,若有“int a=2,b= 387”,則語句“System.out.printf("a=%5d, b=%2d", a, b)”輸出為“a= 2,b=387”。

“%5d”用以指定a的值以十進制整數形式輸出,且寬度為5,若a的實際位數小于5,則左邊補4個空格。“%2d”指定b的輸出寬度為2,但b的實際寬度超過2,輸出寬度按照實際位數。

2.實型數據的格式控制

實型數據的格式控制符有%e和%f兩種,分別以科學記數法形式和小數形式輸出實型數據。例如:

輸出為“e=2.718000,pi=3.141593”。

輸出為“2.718000e+02,3.141592e+05”。

可以看出,小數點后面總是輸出6位,而不管數據的實際小數位數,超出部分四舍五入,不足則補0。

在實型數據的格式控制符中,可以限定輸出寬度,也可以指定小數位數。例如:

輸出為“e= 2.72,pi=3.142”。

“%7.2f”指定數據2.718的輸出格式:數據寬度為7,保留2位小數,實際位數小于7時,左邊補空格,“%.2f”指定數據3.1415926的輸出格式為保留3位小數,總寬度按實際位數。

3.布爾型數據的格式控制

布爾型數據的格式控制符是%b。

例如,若有“boolean flag=true”,則語句“System.out.printf("%b",flag)”將輸出true。

4.字符型數據的格式控制

字符型數據的格式控制符是%c。

例如,若有“char ch='a'”,則語句“System.out.printf("%c,%c",ch,ch?32)”將輸出a,A。

格式控制字符串不但可以靈活指定各種數據類型的輸出格式,而且可以與各種標志搭配組合在一起,形成更豐富的輸出格式,這些標志如表2-7所示。

表2-7 搭配格式控制符的標志

2.3.2 基本輸入語句

從JDK 1.5版本開始,Java語言增加了Scanner類,為數據輸入帶來了很大的方便。如表2-8所示,Scanner類提供一系列方法,用于接收不同類型的數據。

表2-8 Scanner類的主要方法

下面通過一個例子說明實現數據輸入的基本過程。

【例2-3】輸入攝氏溫度,輸出對應的華氏溫度。計算公式如下:

f =c* 9 / 5 + 32

其中,c表示攝氏溫度,f表示華氏溫度。

【程序】

【運行結果】

輸入:29

輸出:84.20

【程序說明】

為了實現數據輸入,程序中首先需要使用import語句通知編譯器,程序中將使用java.util包中的Scanner類;然后創建一個Scanner對象,接下來就可以調用kb.nextDouble()方法,讀取鍵盤輸入的一個雙精度浮點數。

Java語言中的基本數據類型不包括字符串,其使用對象來表示字符串,有關字符串的輸入、存儲和處理將在后面的章節介紹。單個字符的輸入一般利用System.in.read()方法。同樣,本節先介紹其基本的使用方法,不涉及相關的概念。

下面這個例子說明如何通過調用System.in.read()方法,接收鍵盤輸入的一個字符。

【例2-4】接收鍵盤輸入的小寫字母,輸出對應的大寫字母。

【程序】

【運行結果】

輸入:b

輸出:B

【程序說明】

程序包含3個環節:

(1)用“import java.io.IOException”或者“import java.io.*”語句導入IOException類,也就是告訴編譯器本程序中需要使用IOException類,該類屬于java.io包。

(2)在main()方法的頭部,用throws IOException聲明拋出異常。

(3)調用System.in.read()方法,返回值是一個整數(int),對應輸入字符的Unicode編碼。本例中轉換為字符類型后,賦值給字符變量c。

當程序運行到System.in.read()方法時,會等待用戶通過鍵盤輸入數據。用戶可以輸入一個或者多個字符,然后按Enter鍵。System.in.read()方法只會讀取第一個字符,然后繼續運行下面的語句。

主站蜘蛛池模板: 田东县| 贵州省| 宜春市| 寿阳县| 公安县| 藁城市| 晋中市| 平陆县| 屯留县| 瓦房店市| 荆州市| 长沙市| 中超| 军事| 晋城| 大竹县| 辰溪县| 扎赉特旗| 神木县| 广宁县| 顺昌县| 鄂托克前旗| 焦作市| 岢岚县| 济源市| 东台市| 新营市| 斗六市| 无为县| 温泉县| 湖北省| 梧州市| 宜川县| 平阳县| 禹州市| 陆川县| 三台县| 榆树市| 丹东市| 金门县| 郯城县|