- Java語言程序設計
- 陸遲編著
- 1966字
- 2019-01-09 14:01:52
2.8 輸入/輸出初步
為了使讀者盡早進行Java程序的上機實踐,這里先介紹一些Java語言中有關輸入和輸出的基本內容。
2.8.1 標準輸入/輸出
1.標準輸出
(1)print和println方法
從前面的例子程序中,可以看到程序中的System.out.println方法可以將常量、變量或表達式的值輸出到屏幕。println方法可有0 個或1 個參數。若參數是0 個,則輸出一回車換行,光標移動到下一行行首;若有一個參數,該參數可以是char、byte、int、boolean、float、double、String、char[](字符數組)和Object(對象)類型的,各種類型的數據轉換成相應的字符串類型輸出。println方法在輸出給定內容后,輸出一個回車換行。另外也常用System.out.print進行輸出,print方法需要一個參數來輸出,可用的參數類型與println相同,輸出參數的值后不輸出回車換行,因此,若輸出內容本身不包含控制光標的內容或未滿行,System.out.print輸出后,光標將停留在輸出內容后。
在實際輸出時,經常需要將提示信息與變量值一起輸出,但print和println方法只支持一個輸出項,這時,可參考前面各例中的方法,用“+”運算符連接多個輸出項為一項進行輸出。例如:
設有int i = 10,j = 20; System.out.println("i= " + i + " j= " + j);// 輸出為i= 10 j= 20 System.out.println(i + j); // 輸出為30 System.out.println("sum= " + i + j); // 輸出為sum= 1020 System.out.println("sum= " + (i + j)); // 輸出為sum= 30
(2)printf和format格式輸出方法
要控制輸出數據的格式,可使用System.out.printf和類似的System.out.format方法,在方法的參數中對每一輸出項(表達式),都可在一個格式控制字符串中用%開始的格式符進行格式控制。例如:
System.out.printf("a=%d\tb=%f\tc=%c",a,b,c); 或:System.out.format("a=%d\tb=%f\tc=%c",a,b,c);
其中的輸出項為a、b和c三項,在格式控制字符串"a=%d\tb=%f\tc=%c"中有三個格式符對它們進行控制,未指出順序時,按照自然順序進行格式控制,即:%d控制a使其以十進制整數形式輸出;%f控制b使其以十進制實數形式輸出;%c控制c使其以字符形式輸出。為了能得到正確輸出的數據和格式,不同類型的輸出項應使用不同的格式符來進行格式控制輸出。常用格式符有:
%b布爾型數據 %c字符 %s字符串 %d十進制整數 %x十六進制整數 %f十進制實數(默認為六位小數) %e或%g科學記數法形式的十進制實數 %n 輸出換行符 %tX用單個字符X表示需要截取日期的年、月、日、星期等組成部分
在格式字符中還可以加顯示域寬、指定小數的位數和對其方式等,格式控制字符串中的其他字符,無格式控制功能,輸出時將按字符原樣輸出。如上例中的"a="、"b="、"c="和"\t"(制表符)將按格式控制字符串中出現的位置用原意輸出。需注意的是,Java的格式字符與C語言的格式字符不是100%兼容的。例如,下面的語句:
Calendar c = Calendar.getInstance(); System.out.printf("%tD,%tT,%tb%n%tc%n",c,c,c,c);
將輸出:
05/03/10,16:00:08,五月 星期一 五月 03 16:00:08 CST 2010
更多的格式符和控制功能可參見APⅠ資料中關于java.util.Formatter類說明。
2.標準輸入
(1)read方法
在Java中,System.in.read()方法可用于從鍵盤輸入整數值在0~255之間的byte值(int類型)。
應用本方法時要使用Java異常處理機制,如下列程序中的throws ⅠOException。關于異常處理的知識,可見第3章和以后各章的相應章節的介紹。
【例2.9】從鍵盤輸入一個字符,并輸出它在Unicode字符集中的前一字符和后一字符。
import java.io.*; // 引入java.io包 class CharDemo { public static void main(String args[]) throws IOException{ // 拋棄異常 char c,c1,c2; System.out.println("請輸入一個字符,并按回車鍵!"); c=(char)System.in.read(); // 輸入字符 c1=(char)(c-1); c2=(char)(c+1); System.out.println(":" + c1); System.out.println(":" + c2); } }
(2)使用支持各種類型數據輸入的next方法
若使用Java提供java.util.Scanner類中的各種next方法,可從鍵盤輸入各種基本類型和字符串類型的數據。不論需從鍵盤輸入何種類型的數據,Java從鍵盤接收數據都是以字符串的形式進行的,next方法要根據輸入數據的類型來選用。有nextByte、nextⅠnt、nextShort、nextLong、nextFloat、nextDouble、nextBoolean和next(以空格和回車為結束標記的字符串輸入)等適用于不同類型數據輸入的方法。使用next方法進行鍵盤輸入的例子如下。
【例2.10】從鍵盤輸入三角形的三個邊長,求這個三角形的面積。
import java.util.Scanner; class TriArea{ public static void main(String args[]){ System.out.printf("請輸入三角形的三邊長: \n"); Scanner sc = new Scanner(System.in); double a = sc.nextDouble(); double b = sc.nextDouble(); double c = sc.nextDouble(); double t = (a+b+c)/2.0; double s = Math.sqrt(t*(t-a)*(t-b)*(t-c)); System.out.format("三角形的面積為%f\n",s); } }
程序的一次運行如下:
請輸入三角形的三邊長:11 12 13(輸入三角形的三個邊長值后,按Enter鍵) 三角形的面積為61.481705
2.8.2 對話框輸入/輸出
使用對話框功能可以在程序中進行數據的輸入和輸出,使用對話框功能需引入相應的類:import javax.swing.JOptionPane;。
1.使用showMessageDialog(輸出信息對話框)方法輸出信息
Java中的JOptionPane.showMessageDialog方法是用對話框的形式來進行輸出的,支持一個輸出項,在輸出內容較多時,也可用字符串連接的形式來輸出。例如下面的程序:
【例2.11】求sin30°和cos30°的值。
import javax.swing.JOptionPane; import static java.lang.Math.*; class DialogDemo{ public static void main(String args[]){ String s1="sin30度的值="; s1 = s1 + sin(PI*30/180); s1 = s1 + "\ncos30度的值="; s1 = s1 + cos(PI*30/180); JOptionPane.showMessageDialog(null,s1); } }
它的輸出結果見圖2.1。

圖2.1 例2.11的運行結果
2.使用showInputDialog方法輸入信息
使用Java提供的javax.swing.JOptionPane類中的showⅠnputDialog方法,可從輸入信息對話框中輸入一個字符串。需要時,可進行類型轉換,得到所需類型的輸入數據。
【例2.12】使用對話框進行程序的輸入/輸出。輸入一個代表年號的整數,求這一年的元旦是星期幾?
元旦是星期幾的計算公式(設年號為y,按整數運算):
s = y + (y-1) / 4- (y-1) / 100 + (y-1)/ 400;
s除以7的余數即為星期數,余數為0表示星期日。
import javax.swing.JOptionPane; class YuanDan{ public static void main(String args[]){ int s,y;
y=Integer.parseInt(JOptionPane.showInputDialog("請輸入一個年號:")); s = y + (y-1) / 4- (y-1) / 100 + (y-1)/ 400; s = s % 7; JOptionPane.showMessageDialog(null,y + " 年的元旦是星期 "+ s); } }
程序運行的界面及結果見圖2.2和圖2.3。

圖2.2 例2.12的輸入

圖2.3 例2.12的輸出
- 在最好的年紀學Python:小學生趣味編程
- Python快樂編程:人工智能深度學習基礎
- CockroachDB權威指南
- Java面向對象思想與程序設計
- Java Web基礎與實例教程(第2版·微課版)
- 數據結構簡明教程(第2版)微課版
- 深入淺出RxJS
- Hands-On GPU:Accelerated Computer Vision with OpenCV and CUDA
- Working with Odoo
- Mastering AWS Security
- JavaScript程序設計:基礎·PHP·XML
- 從零開始學Android開發
- Selenium WebDriver Practical Guide
- Spring Boot從入門到實戰
- C++面向對象程序設計教程