a[i]="";
returna;
}
}
9—9
计算某年、某月、某日与某年、某月、某日之间得天数间隔。
要求年、月、日通过键盘输入。
importjava、util、Calendar;
importjava、util、Scanner;
publicclassXiti9{
publicstaticvoidmain(String[]args){
Calendarcalendar=Calendar、getInstance();
Scannerreader=newScanner(System、in);
System、out、println("请输入年份");
intyear=reader、nextInt();
System、out、println("请输入月份");
intmonth=reader、nextInt();
System、out、println("请输入日子");
intday=reader、nextInt();
calendar、set(year,month-1,day);
longtime1=calendar、getTimeInMillis();
System、out、println("请输入年份");
year=reader、nextInt();
System、out、println("请输入月份");
month=reader、nextInt();
System、out、println("请输入日子");
day=reader、nextInt();
calendar、set(year,month-1,day);
longtime2=calendar、getTimeInMillis();
longsub=(time2>time1)?
((time2-time1)/(1000*60*60*24)):
((time1-time2)/(1000*60*60*24));
System、out、println("相隔"+sub+"天");
}
}
10—10
略
10—11
参瞧例9—19,编写程序剔除一个字符串中得全部非数字字符,例如,将形如“abc123you”得非数字字符全部剔除得到字符串“123”。
importjava、util、regex、Matcher;
importjava、util、regex、Pattern;
publicclassXiti11{
publicstaticvoidmain(String[]args){
Patternp;
Matcherm;
Stringregex="\\D{1,}";
p=Pattern、compile(regex);
Strings="abc123you";
m=p、matcher(s);
System、out、println("剔除以后得字符串");
Stringresult=m、replaceAll("");
System、out、println(result);
}
}
10—12
参瞧例9—21,使用Scanner类得实例解析,“数学87分,物理76分,英语96分”中得考试成绩,并计算出总成绩以及平均分数。
importjava、util、Scanner;
publicclassXiti12{
publicstaticvoidmain(String[]args){
StringCount="数学87分,物理76分,英语96分";
Scannerscanner=newScanner(Count);
scanner、useDelimiter("[^0123456789]+");
intsum=0;
while(scanner、hasNext())
{
intcount=scanner、nextInt();
sum+=count;
}
doubleavg=sum/3;
System、out、println("总分数为"+sum+"平均分"+avg);
}
}
习题10
10—1
如果准备按字节读取一个文件得内容,应当使用流还就是流?
前者就是以字节为单位顺序得读取源中得数据,后者就是以字符为单位顺序得读取源中得数据。
10—2
流得read方法与流得read方法有何不同?
同上
10—3
BufferedReader流能直接指向一个文件么?
不能,通过向BufferedReader传递一个Reader子类得对象,来创建一个BufferedReader对象
10—4
使用ObjectInputStream与ObjectOutputStream类有哪些注意事项?
ObjectOutputStream得指向应当就是一个输入流对象,因此当准备将一个对象写入到文件时,首先用OutputStream得子类创建一个输出流。
同样ObjectInputStream得指向应当就是一个输入流对象,因此当准备从文件读入一个对象到程序中得时候,首先用InputStream得子类创建一个文件输入流。
当使用对象流写入或者读入对象得时,要保证对象就是序列化得。
这就是为了保证能把对象写入到文件,并能把对象正确读回到程序得缘故。
10—5
怎样使用输入输出流克隆对象?
只需将该对象写入得对象得输出流得指向得目得地,然后将该目得地作为一个对象得输入流得源,那么该对象输入流从源中读回得对象一定就是源对象得一个克隆,即对象输入流通过对象得序列化信息得到当前流得一个克隆。
10—6
使用RandomAccessFile流将一个文本文件倒置读出。
importjava、io、*;
publicclassXiti6{
publicstaticvoidmain(String[]args){
RandomAccess=null;
intdata[]={1,2,3,4,5,6,7,8,9,0};
try
{
inAndOut=newRandomAccessFile("tom、dat","rw");
for(inti=0;i{
inAndOut、writeInt(data[i]);
}
for(longi=data、length-1;i>=0;i--)
{
inAndOut、seek(i*4);
System、out、printf("\t%d",inAndOut、readInt());
}
inAndOut、close();
}
catch(IOExceptione)
{}
}
}
10—7
使用java得输入输出流将一个文本文件得内容按行读出,每读出一行就顺序添加行号,并写入到另一个文件中。
10—8
略
10—9
解析一个文件中得价格数据,并计算平均价格,该文件得内容如下:
商品列表:
电视机,2567元/台
洗衣机,3562元/台
冰箱,6573元/台
importjava、io、*;
importjava、util、*;
publicclassXiti9{
publicstaticvoidmain(String[]args){
=newFile("cost、txt");
Scannersc=null;
doublesum=0;
inti=0;
try
{
sc=newScanner(file);
while(sc、hasNext())
{
try
{
intprice=sc、nextInt();
sum+=price;
i++;
System、out、println(price);
}
catch(InputMismatchExceptionexp)
{
Stringt=sc、next();
}
}
doubleavg=sum/i;
System、out、println(avg);
System、out、println("TotalCost"+sum+"dollar");
}
catch(Exceptionexp)
{
System、out、println(exp);
}
}
}