- Java面向對象思想與程序設計
- 劉彥君 張仁偉 滿志強
- 1575字
- 2019-12-27 14:31:41
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運行結果
- 在最好的年紀學Python:小學生趣味編程
- Monkey Game Development:Beginner's Guide
- Java EE框架整合開發(fā)入門到實戰(zhàn):Spring+Spring MVC+MyBatis(微課版)
- Unity Shader入門精要
- Visual Basic程序設計實驗指導(第4版)
- Python數(shù)據(jù)可視化之Matplotlib與Pyecharts實戰(zhàn)
- Unity 3D腳本編程:使用C#語言開發(fā)跨平臺游戲
- 區(qū)塊鏈國產(chǎn)化實踐指南:基于Fabric 2.0
- Data Manipulation with R(Second Edition)
- Getting Started with hapi.js
- Flutter之旅
- Selenium Essentials
- 計算機輔助設計與繪圖技術(AutoCAD 2014教程)(第三版)
- Visual Basic.NET程序設計
- Mastering VMware Horizon 6