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()方法只會讀取第一個字符,然后繼續運行下面的語句。
- PHP動態網站程序設計
- PHP 編程從入門到實踐
- 深入淺出Android Jetpack
- FLL+WRO樂高機器人競賽教程:機械、巡線與PID
- Java 9模塊化開發:核心原則與實踐
- Mastering Drupal 8 Views
- MATLAB 2020從入門到精通
- Visual Basic程序設計實驗指導(第二版)
- Integrating Facebook iOS SDK with Your Application
- INSTANT Sinatra Starter
- Visual Studio Code 權威指南
- Clojure for Java Developers
- Java Web從入門到精通(第2版)
- OpenCV Android開發實戰
- 數據科學中的實用統計學(第2版)