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

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的輸出

主站蜘蛛池模板: 康马县| 新乐市| 福泉市| 平昌县| 翁牛特旗| 宜黄县| 牙克石市| 泗水县| 东乡族自治县| 洛浦县| 南阳市| 旅游| 瑞昌市| 泸溪县| 措勤县| 麻栗坡县| 澜沧| 广水市| 四川省| 盐亭县| 中宁县| 彭阳县| 临高县| 永福县| 柳江县| 竹山县| 鹤壁市| 汕头市| 金华市| 安庆市| 翼城县| 民勤县| 苗栗市| 紫金县| 萝北县| 东乡县| 都安| 大埔县| 法库县| 隆林| 潍坊市|