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

2.2 輸入輸出

程序運行時,可能需要給程序輸入數(shù)據(jù),這時需要用到輸入語句;程序處理完數(shù)據(jù),要將結果輸出出來,這時就要用到輸出語句。

Java采用流式方式對數(shù)據(jù)進行輸入輸出。Java定義了很多流類,可以通過流類的對象及其中的方法實現(xiàn)數(shù)據(jù)的輸入輸出(關于類、對象的概念讀者可以先不必深入理解,只要按照下面介紹的方法使用就可以了)。

2.2.1 輸入

輸 入

從鍵盤(標準輸入設備)輸入數(shù)據(jù),可以用Scanner類的對象及其中的方法(C/C++語言稱為函數(shù))實現(xiàn)輸入。

Scanner類的對象的定義形式:

Scanner reader=new Scanner(System.in);

reader是Scanner類的一個對象。

Scanner類中有較多的方法,常用的與基本數(shù)據(jù)類型有關的方法見表2-5。

表2-5 Scanner類中的常用方法

續(xù)表

【例2.2】基本數(shù)據(jù)類型數(shù)據(jù)的輸入與輸出。

【代碼】

 

import java.util.Scanner;//必須寫上這條語句

public class Example2_02

{

  public static void main(String args[])

  {

    boolean bool;

    byte b;

    short s;

    int i;

    long lg;

    float f;

    double d;

    String str;

    Scanner reader=new Scanner(System.in);

    bool=reader.next Boolean();

    b=reader.next Byte();

    s=reader.next Short();

    i=reader.next Int();

    lg=reader.next Long();

    f=reader.next Float();

    d=reader.next Double();

    str=reader.next Line();

    System.out.println("輸出:");

    System.out.println("\tbool="+bool);

    System.out.println("\tb="+b);

    System.out.println("\ts="+s);

    System.out.println("\ti="+i);

    System.out.println("\tlg="+lg);

    System.out.println("\tf="+f);

    System.out.println("\td="+d);

    System.out.println("\tstr="+str);

  }

}

程序運行結果如圖2-3所示。

圖2-3 例2.2的運行結果

例2.2程序運行時,所有數(shù)據(jù)可以在一行輸入,也可以分多行輸入。

【例2.3】已知若干名學生某一課程的成績,計算這些學生的總成績和平均成績。

由于學生人數(shù)未知(如多個班級),所以無法準確輸入成績數(shù)。這時可以利用方法has Next XXX()判斷是否還有成績。如果有,則繼續(xù)累加;否則計算平均成績。

輸入時,所有學生的成績輸入完成后,再輸入任意一個字符或字符串(非數(shù)值型數(shù)),則程序不再等待輸入。

【代碼】

 

import java.util.Scanner;

public class Example2_03

{

public static void main(String args[])

{

  double score,total=0;

  int counter=0;

  Scanner input=new Scanner(System.in);

  System.out.println("輸入若干學生成績,以任一字符(串)結束:");

  while(input.has Next Double())

  {

    score=input.next Double();

    total+=score;

    counter++;

  }

    System.out.printf("總成績:%.1f,",total);

    System.out.printf("平均成績:%.1f\n",total/counter);

  }

}

程序運行結果如圖2-4所示。

圖2-4 例2.3的運行結果

2.2.2 輸出

輸出

基本數(shù)據(jù)類型可以用Print Stream類中的方法完成輸出。類中有3種常用的方法:

 

void print(基本數(shù)據(jù)類型數(shù)據(jù));

void println([基本數(shù)據(jù)類型數(shù)據(jù)]);

void printf(輸出格式控制字符串,輸出項表列);

1.print()方法

print()方法有并且只能有一個基本數(shù)據(jù)類型的數(shù)據(jù),包括字符串類型,它輸出數(shù)據(jù)后不換行。

如輸出“a=10”。“a=10”相當于兩個數(shù)據(jù),“a=”是一個數(shù)據(jù),“10”是一個數(shù)據(jù)。如果想調用一次print()函數(shù)將“a=10”輸出,可以將兩個數(shù)變成一個數(shù):

“a=”+a

其中的“+”運算可將a的值轉換成對應的字符串“10”并連接到“a=”后面形成一個字符串“a=10”,這個字符串再當作print()的參數(shù)就可以輸出想要的結果,如例2.2。

2.println()方法

println()方法可以有參數(shù)也可以沒有參數(shù)。

如果沒有參數(shù),只輸出一個換行。如果有參數(shù),有并且只能有一個基本數(shù)據(jù)類型的參數(shù),輸出該參數(shù)后換行。它的參數(shù)用法與print()方法相同。

print()方法與println()方法有兩個區(qū)別,一個是是否換行,另一個是是否可以不帶參數(shù)。

println()方法的使用參見例2.2。

3.printf()方法

printf()方法是有格式的數(shù)據(jù)輸出方法,它一次可以按給定的格式輸出較多的數(shù)據(jù)。使用起來較方便。它的使用形式:

printf(String format, Object… args)

“format”是用于控制后面輸出項的字符串,“args”是個數(shù)可變的輸出數(shù)據(jù)。

“format”的格式如下:

[普通字符]%[標志字符][輸出寬度][.小數(shù)位數(shù)]格式控制字符[普通字符]

其中的“%”和“格式控制字符”必須有,其余的可有可無。“普通字符”按原樣輸出。“格式控制字符”如表2-6所列。

表2-6 格式控制字符

*如0x1.9p6,1.9是十六進制數(shù),p6是26,0x1.9p6=(1+9/16)*26=100.0

“標志字符”如表2-7所列。

表2-7 標志字符

“輸出寬度”是一個整型數(shù),指的是一個數(shù)據(jù)輸出時占的位數(shù)。如果數(shù)據(jù)的實際寬度比指定寬度大,則按數(shù)據(jù)的實際寬度輸出。如果指定的寬度比實際寬度大,則用空格填充不足部分,或者指定了標志字符“0”,則用“0”填充。

“小數(shù)位數(shù)”指的是輸出浮點數(shù)時小數(shù)的個數(shù),不指定(默認)則輸出6位。

“格式控制字符”必須與后面的輸出項相對應。

Java中有一個系統(tǒng)類System,類中有一個域——Print Stream類的對象,這個對象是一個標準輸出對象。利用這個對象調用上面的3個方法就可以將數(shù)據(jù)輸出到屏幕上。

【例2.4】printf()方法的使用。

【代碼】

 

public class Example2_04

{

  public static void main(String args[])

  {

    int a=123,b=456;

    System.out.printf("1:a>b=%b,a<b=%B%n",a>b,a<b);//注意換行

    System.out.printf("2:%-8d,%8d",a,b);//無換行

    System.out.print('\n');//換行

    System.out.printf("3:%d,%o,%x\n", -1,-1,-1);

    System.out.printf("4:%(d,%#o,%#x\n",-1,-1,-1);

    System.out.printf("5:%2d,%8d,%08d\n", a,b,b);

    double d=1234.45678901;

    System.out.printf("6:%f,%.2f,%8.5f\n",d,d,d);

    System.out.printf("7:%E,%8.2e,%15.6E\n",d,d,d);

    System.out.printf("8:%a\n",99.0);

    String str="Beijing";

    System.out.printf("9:addr——%s\n",str);//注意大小寫

    System.out.printf("10:addr——%20S\n",str);

    long l=123456778899L;

    System.out.printf("11:%,+d\n",l);

  }

}

程序運行結果如圖2-5所示。

圖2-5 例2.4運行結果

主站蜘蛛池模板: 德化县| 铜鼓县| 馆陶县| 哈巴河县| 中山市| 昆明市| 乌鲁木齐市| 阿拉尔市| 武威市| 察隅县| 瑞丽市| 三江| 大足县| 明溪县| 顺义区| 当雄县| 获嘉县| 什邡市| 丰顺县| 满洲里市| 昆明市| 洞头县| 和政县| 肇庆市| 绥中县| 乌拉特前旗| 房产| 德江县| 灵璧县| 凤阳县| 江门市| 周宁县| 长垣县| 隆林| 英山县| 龙陵县| 红河县| 玛曲县| 中西区| 克山县| 孝感市|