《Java程序设计教程》课后答案-赵辉_第1页
《Java程序设计教程》课后答案-赵辉_第2页
《Java程序设计教程》课后答案-赵辉_第3页
《Java程序设计教程》课后答案-赵辉_第4页
《Java程序设计教程》课后答案-赵辉_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第一章【基础】1,D2,B3,A4,AllmansKernighan5,编辑源程序$编译生成字节码$解释运行字节码【应用】1,Java平台由JVM和JavaAPI组成。其中JVM为Java虚拟机,它类似于可运行Java程序的抽象计算机,而JavaAPI是已编译的可在任何Java程序中使用的代码库(即Java类库),它们作为可定制的现成功能可以随时添加到Java【应用】程序中,以节约编程时间,实现代码复用。2,publicclassC1_P4{//类名 publicstaticvoidmain(Stringargs[]){ System.out.println("mynameistom");//输出语句,输出"mynameistom }}第二章【基础】1.A2.C3.4.B【应用】1,(1)true(2)false(3)false(4)true2,(1)20.0(2)13(3)158.0(4)0(5)false3,(1)importjava.util.Scanner;publicclassExample{ publicstaticvoidmain(String[]args){ System.out.println("pleaseinputyoursalesAmount:"); ScannerI=newScanner(System.in); doublesalesAmount=I.nextDouble(); doublecommission; if(salesAmount>=10001) commission=5000*0.08+5000*0.1+(salesAmount-10000)*0.12; elseif(salesAmount>=5001) commission=5000*0.08+(salesAmount-5000)*0.1; else commission=salesAmount*0.08; System.out.println(commission); }}(2)importjava.util.Scanner;publicclassExample{ publicstaticvoidmain(String[]args){ System.out.println("pleaseinputyournumber:"); ScannerI=newScanner(System.in); doublea=I.nextDouble(); doubleb=I.nextDouble(); doublec=I.nextDouble(); if(a+b>c&&a+c>b&&b+c>a) { System.out.println("可以构成三角形\n"); if(a==b&&a==c)System.out.println("等边三角形"); elseif(a==b||a==c||b==c)System.out.println("等腰三角形"); elseif(a*a+b*b==c*c)System.out.println("直角三角形"); } else System.out.println("不可以构成三角形"); }}【探索】1,publicclassExample{ /** *@paramargs */ publicstaticvoidmain(String[]args){ //TODOAuto-generatedmethodstub for(inti=0;i<5;i++){for(intj=0;j<5;j++){if(j==2&&(i==0||i==4)){System.out.print("*");}elseif((i==1||i==3)&&0<j&&j<4){System.out.print("*");}elseif(i==2){System.out.print("*");}else{System.out.print("");}}System.out.println();} }}2,publicclassExample{ publicstaticvoidmain(String[]args){ for(introw=0;row<=7;row++) { for(intcolumn=1;column<=7-row;column++) { System.out.print(""); } for(intcolumn=1;column<=row+1;column++) { System.out.print(""+column); } for(intcolumn=row;column>0;column--) { System.out.print(""+column); } System.out.println(); } }}第三章【基础】1,D2,A3,封装,继承,多态4,为了更好地组织类,Java提供了包机制。包是类的容器,用于分隔类名空间。如果没有指定包名,所有的示例都属于一个默认的无名包。Java中的包一般均包含相关的类,例如,所有关于交通工具的类都可以放到名为Transportation的包中。如上所述,更好的组织类,防止在一个空间下出现类重名啊这些情况;表明类之间的层次关系。5,this代表的是当前对象,可以是当前对象的方法、变量。super代表的是父类,说白了就是在子类中通过super关键字来调用父类的东西【应用】1,classStudent{privateStringname;privateintstuId;privatefloatscore;publicStringgetName(){returnname;}publicvoidsetName(Stringname){=name;}publicintgetStuId(){returnstuId;}publicvoidsetStuId(intstuId){this.stuId=stuId;}publicfloatgetScore(){returnscore;}publicvoidsetScore(floatscore){this.score=score;}publicvoidshowInfo(){System.out.println("Student[name="+name+",stuId="+stuId+",score="+score+"]");}}importjava.util.Scanner;publicclassExample{ publicstaticvoidmain(String[]args){ ScannerI=newScanner(System.in); Studentstr=newStudent(); System.out.println("请输入姓名"); str.setName(I.next()); System.out.println("请输入学号"); str.setStuId(I.nextInt()); System.out.println("请输入成绩"); str.setScore(I.nextFloat()); str.showInfo(); }}2,classRectangle{privateDoubleWidth;publicDoubleLength;publicDoublegetWidth(){ returnWidth;}publicvoidsetWidth(Doublewidth){ if(width>0.0&&width<20.0) Width=width; else System.out.println("不为0.0到20.0的浮点数");}publicDoublegetLength(){ returnLength;}publicvoidsetLength(Doublelength){ if(length>0.0&&length<20.0) Length=length; else System.out.println("不为0.0到20.0的浮点数");}publicDoublePerimeter(){ return2*(Length+Width);}publicDoubleArea(){ returnLength*Width;}}importjava.util.Scanner;publicclassExample{ publicstaticvoidmain(String[]args){ RectangleR=newRectangle(); ScannerI=newScanner(System.in); System.out.println("请输入长方形的长"); R.setLength(I.nextDouble()); System.out.println("请输入长方形的宽"); R.setWidth(I.nextDouble()); System.out.println("长方形的面积"); System.out.println(R.Area()); System.out.println("长方形的周长"); System.out.println(R.Perimeter()); }}第四章【基础】1,D2,C3,A4,D5,B【应用】1,/***账户类。**@authorCodingMouse*@version1.0*/publicabstractclassAccount{protectedStringaccountNumber;//账号protecteddoubleoverage;//余额protecteddoubleannualInterestRate;//年利率/***参数化构造器方法。**用于开户。*@paramaccountNumber预设账号*@paramoverage初始余额*@paramannualInterestRate预设年利率*/publicAccount(StringaccountNumber,doubleoverage,doubleannualInterestRate){super();//设定账号。this.accountNumber=accountNumber;//设定初始余额,至少为零。this.overage=overage>=0?overage:0;//设定年利率,至少为零。this.annualInterestRate=annualInterestRate>=0?annualInterestRate:0;}/***查询账号。*@return返回账号。*/publicStringgetAccountNumber(){returnthis.accountNumber;}/***设置账号。*@paramaccountNumber新账号。*/publicvoidsetAccountNumber(StringaccountNumber){this.accountNumber=accountNumber;}/***查询余额方法。*@return返回账户余额。*/publicdoublegetOverage(){returnthis.overage;}/***存款方法。*@parammoney要存入的金额。*@return返回true时存款成功,否则存款失败。*/publicbooleandepositMoney(doublemoney){//如果金额小于零,则不能存款if(money<=0)returnfalse;//否则将相应的金额累加到账户余额中this.overage+=money;returntrue;}/***取款方法。**默认不能透支。*@parammoney要取出的金额。*@return返回true时取款成功,否则取款失败。*/publicbooleandrawMoney(doublemoney){//如果账户余额不足,则不能取款if(this.overage<money)returnfalse;//否则从账户余额中扣除相应的金额this.overage-=money;returntrue;}/***查询年利率。*@return返回年利率。*/publicdoublegetAnnualInterestRate(){returnthis.annualInterestRate;}/***设置年利率。*@paramannualInterestRate新的年利率。*/publicvoidsetAnnualInterestRate(doubleannualInterestRate){this.annualInterestRate=annualInterestRate;}}--------------------------------------------------/***借记卡账户。**不能透支。*@authorCodingMouse*@version1.0*/publicclassDebitCardAccountextendsAccount{/***重写父类构造器。*@paramaccountNumber预设账号*@paramoverage初始余额*@paramannualInterestRate预设年利率*/publicDebitCardAccount(StringaccountNumber,doubleoverage,doubleannualInterestRate){super(accountNumber,overage,annualInterestRate);}}-------------------------------------------------/***信用卡账户。**可以透支。*@authorCodingMouse*@version1.0*/publicclassCreditCardAccountextendsAccount{privatedoubleoverdraftLimit;//透支限度/***重载构造器。**便于构建可透支的信用卡账户实例。*@paramaccountNumber预设账号*@paramoverage初始余额*@paramannualInterestRate预设年利率*@paramoverdraftLimit透支限度*/publicCreditCardAccount(StringaccountNumber,doubleoverage,doubleannualInterestRate,doubleoverdraftLimit){super(accountNumber,overage,annualInterestRate);this.overdraftLimit=overdraftLimit;}/***查询透支限度的方法。*@return透支限度金额。*/publicdoublegetOverdraftLimit(){returnthis.overdraftLimit;}/***设置透支限度的方法。*@paramoverdraftLimit新的透支限度金额。*/publicvoidsetOverdraftLimit(doubleoverdraftLimit){//透支限度必须为零和正数,否则为零。this.overdraftLimit=overdraftLimit>=0?overdraftLimit:0;}/***重写父类构造器。*@paramaccountNumber预设账号*@paramoverage初始余额*@paramannualInterestRate预设年利率*/publicCreditCardAccount(StringaccountNumber,doubleoverage,doubleannualInterestRate){super(accountNumber,overage,annualInterestRate);}/***重写父类取款方法。**将默认不能透支的取款改为可以透支的取款。*@parammoney要取出的金额。*@return返回true时取款成功,否则取款失败。*/@OverridepublicbooleandrawMoney(doublemoney){//如果账户余额+透支限度的总金额仍不足,则不能取款if(this.overage+this.overdraftLimit<money)returnfalse;//否则从账户余额中扣除相应的金额this.overage-=money;returntrue;}}------------------------------------------/***测试账户使用。**@authorCodingMouse*@version1.0*/publicclassTest{/***主程序方法。*@paramargs入口参数。*/publicstaticvoidmain(String[]args){//创建一个不能透支的借记卡账户。System.out.println("------------借记卡账户------------");DebitCardAccountdebitCardAccount=newDebitCardAccount("CHK20100117001",100,0.02);//初始余额有100元,调用并打印取90元和取120元的结果。System.out.println("取90元的结果:"+debitCardAccount.drawMoney(90));//重新存入90元debitCardAccount.depositMoney(90);System.out.println("取120元的结果:"+debitCardAccount.drawMoney(120));//创建一个可以透支的信用卡账户。System.out.println("------------信用卡账户------------");CreditCardAccountcrebitCardAccount=newCreditCardAccount("CHK20100117002",100,0.03,50);//初始余额有100元,并且透支限度为50元,调用并打印取90元、取120元和取160元的结果。System.out.println("取90元的结果:"+crebitCardAccount.drawMoney(90));//重新存入90元crebitCardAccount.depositMoney(90);System.out.println("取120元的结果:"+crebitCardAccount.drawMoney(120));//重新存入120元crebitCardAccount.depositMoney(120);System.out.println("取160元的结果:"+crebitCardAccount.drawMoney(160));}}2,classVehicle{privateintwheels;privatefloatweight;protectedVehicle(intwheels,floatweight){this.wheels=wheels;this.weight=weight;}publicintgetWheels(){returnwheels;}publicfloatgetWeight(){returnweight;}publicvoidprint(){System.out.println("汽车:");System.out.println("共有"+this.getWheels()+"个轮子");System.out.println("重量为"+this.getWeight()+"吨");}}classCarextendsVehicle{privateintpassenger_load;publicCar(intwheels,floatweight,intpassenger_load){super(wheels,weight);this.passenger_load=passenger_load;}publicintgetPassenger_load(){returnpassenger_load;}publicvoidprint(){System.out.println("小车:");System.out.println("共有"+this.getWheels()+"个轮子");System.out.println("重量为"+this.getWeight()+"吨");System.out.println("载人数为"+this.getPassenger_load()+"人");}}classTruckextendsVehicle{privateintpassenger_load;privatefloatpayload;publicTruck(intwheels,floatweight,intpassenger_load,floatpayload){super(wheels,weight);this.passenger_load=passenger_load;this.payload=payload;}publicintgetPassenger_load(){returnpassenger_load;}publicfloatgetPayload(){returnpayload;}publicvoidprint(){System.out.println("卡车:");System.out.println("共有"+this.getWheels()+"个轮子");System.out.println("重量为"+this.getWeight()+"吨");System.out.println("载人数为"+this.getPassenger_load()+"人");System.out.println("载重量为"+this.getPayload()+"吨");}}publicclassTest{publicstaticvoidmain(Stringargs[]){Vehiclecar=newCar(4,3,4);Vehicletruck=newTruck(6,6,2,10);System.out.println("*****************************");car.print();System.out.println("*****************************");truck.print();}}3,packagetrival;publicclassTrivalTest{ classTrival { inta; publicTrival(){ } publicTrival(inta){ this.a=a; } publiclongfindArea() { returnMath.round(Math.sqrt(3)/4*Math.pow(a,2)); } } classTriCylinderextendsTrival { intlength; publicTriCylinder() { } publicTriCylinder(inta,intlength) { super.a=a; this.length=length; } publiclongfindArea() { returnMath.round(Math.sqrt(3)/4*Math.pow(a,2)+a*length*3); } publiclongfindVolume() { returnMath.round(Math.sqrt(3)/4*Math.pow(a,2)*length); } } voidTest() { TriCylindert=newTriCylinder(4,3); System.out.println("findArea()="+t.findArea()); System.out.println("findVolume()="+t.findVolume()); } publicstaticvoidmain(Stringargv[]) { newTrivalTest().Test(); }}第五章【基础】1,c2,c3,a4,c5,throws是用在方法名之后的,声明该方法会抛出一个异常,抛给上级方法throw是用在catch块内的,表示遇到异常之后要抛出一个异常。【应用】1,2,StringdateString="2002/02/20";Stringtmp="";booleanflag=true;intindex1=dateString.indexOf("/");if(dateString.length()==10){if(index1==4){tmp=dateString.substring(5);intindex2=tmp.indexOf("/");if(index2==6)flag=true;}}elseflag=false;System.out.println(flag);3,StringgetId(intlength){ //26个字母和10个数字,共36个符号, //随机生成0到35的数字分别对应到字母和数字 StringBuffersb=newStringBuffer(); for(inti=0;i<length;i++){ inttmp=(int)(Math.random()*36); if(tmp<10)sb.append((char)('0'+tmp)); elsesb.append((char)('A'+tmp-10)); } returnsb.toString();}第六章【基础】1,A2,D3,A4,D5,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用率【应用】1,Stack.javaimportjava.util.concurrent.locks.Condition;importjava.util.concurrent.locks.Lock;importjava.util.concurrent.locks.ReentrantLock;publicclassStack{privateint[]data;privateintindex;privateLocklock;privateConditionmoreSpace;privateConditionmoreEelment;publicStack(intsize){this.data=newint[size];this.index=0;this.lock=newReentrantLock();this.moreSpace=lock.newCondition();this.moreEelment=lock.newCondition();}publicvoidpush(intvalue){lock.lock();try{while(index==data.length){moreSpace.await();}data[index++]=value;moreEelment.signalAll();}catch(InterruptedExceptione){e.printStackTrace();}finally{lock.unlock();}}publicintpopup(){lock.lock();intvalue=0;try{while(index==0){moreEelment.await();}value=data[--index];moreSpace.signalAll();}catch(InterruptedExceptione){e.printStackTrace();}finally{lock.unlock();}returnvalue;}}写入线程WriteStack.javaimportjava.util.Random;publicclassWriteStackimplementsRunnable{privateStackstack;publicWriteStack(Stackstack){this.stack=stack;}@Overridepublicvoidrun(){Randomr=newRandom(System.currentTimeMillis());for(inti=0;i<10;i++){intvalue=r.nextInt(500);stack.push(value);System.out.printf("Write:push%dinstack\n",value);try{Thread.sleep(r.nextInt(500));}catch(InterruptedExceptione){e.printStackTrace();}}}}读取线程ReadStack.javaimportjava.util.Random;publicclassReadStackimplementsRunnable{privateStackstack;publicReadStack(Stackstack){this.stack=stack;}@Overridepublicvoidrun(){Randomr=newRandom(System.currentTimeMillis());for(inti=0;i<10;i++){intvalue=stack.popup();System.out.printf("Read:popupanelement%d\n",value);try{Thread.sleep(r.nextInt(500));}catch(InterruptedExceptione){e.printStackTrace();}}}}主测试线程StackExample.javapublicclassStackExample{publicstaticvoidmain(String[]args)throwsInterruptedException{Stackstack=newStack(5);WriteStackwriteStack=newWriteStack(stack);ReadStackreadStack=newReadStack(stack);ThreadwriteThread=newThread(writeStack);ThreadreadThread=newThread(readStack);writeThread.start();readThread.start();}}2,importjava.util.HashMap;publicclassEx15{publicstaticvoidmain(String[]args){HashMapmap=newHashMap();map.put("张三",90);map.put("李四",83);System.out.println("修改前的成绩:");System.out.println(map);map.put("李四",100);System.out.println("修改后的成绩:");System.out.println(map);}}3,importjava.util.HashMap;importjava.util.Map;publicclassEx15{ publicstaticvoidmain(String[]args){ String[]eng={"Apple","Orange","Green"}; String[]chs={"苹果","桔子","绿色"}; Map<String,String>map=newHashMap<String,String>(); for(inti=0;i<eng.length;i++) map.put(eng[i],chs[i]); Stringtest="Orange"; System.out.println(test+"翻译:"+map.get(test));} }第七章【基础】1.下列(A)不是所有GUI组件都能产生的事件。A.ActionEventB.MouseEventC.KeyEventD.FocusEvent2.下列()不是定义在MouseListener中(D)。A.mouseEnteredB.mousePressedC.mouseClickedD.mouseMoved3.addActionListener(this)方法中的this参数表示的意思是(A)。A.当有事件发生时,应该使用this监听器B.this对象类会处理此事件C.this事件优先于其他事件D.只是一种形式4.FlowLayout分布管理器可以使用三个常量之一来指定组件的对齐方式,这三个常量是FlowLayout.RIGHT,FlowLayout.CENTER和FlowLayout.LEFT。5.类_Component_是所有UI组件和容器的根类。【应用】编写一个将华氏温度转换为摄氏温度的程序。其中一个文本框用于输入华氏温度,另一个文本框用于显示转换后的摄氏温度,按钮完成温度的转换。使用下面的公式进行温度转换:摄氏温度=5/9x(华氏温度-32)。package.ccut.test;

importjavax.swing.*;

importjava.awt.*;

importjava.awt.event.ActionEvent;

importjava.awt.event.ActionListener;

/**

*CreatedbyThinkon2016/6/4.

*/

publicclassTemperatureFrameextendsJFrameimplementsActionListener{

//privateJButtontransformFButton=newJButton("摄氏度");

privateJButtontransformFButton=newJButton("摄氏转华氏");

privateJButtontransformCButton=newJButton("华氏转摄氏");

privateJTextFieldfTextField=newJTextField();

privateJTextFieldcTextField=newJTextField();

floatc,f;

publicTemperatureFrame(){

super("华氏温度摄氏温度转换");

try{

init();

}catch(Exceptione){

e.printStackTrace();

}

}

privatevoidinit(){

fTextField.setBounds(10,30,100,25);

cTextField.setBounds(130,30,100,25);

transformCButton.setBounds(10,58,100,25);

transformFButton.setBounds(130,58,100,25);

transformCButton.addActionListener(this);

transformFButton.addActionListener(this);

Containerc=getContentPane();

c.add(fTextField);

c.add(cTextField);

c.add(transformCButton);

c.add(transformFButton);

c.setLayout(null);

this.setSize(250,150);

this.setResizable(false);

this.setLocationRelativeTo(null);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

this.setVisible(true);

}

publicstaticvoidmain(String[]args){

newTemperatureFrame();

}

publicvoidactionPerformed(ActionEvente){

//华氏温度F与摄氏度C

//F=C*9/5+32

//C=(F-32)*5/9

if(e.getSource()==transformFButton){

try{

c=Float.parseFloat(cTextField.getText());

f=c*9/5+32;

fTextField.setText(String.valueOf(f));

}catch(Exceptionex){

ex.printStackTrace();

}

}

if(e.getSource()==transformCButton){

try{

f=Float.parseFloat(fTextField.getText());

c=(f-32)*5/9;

cTextField.setText(String.valueOf(c));

}catch(Exceptionex){

ex.printStackTrace();

}

}

}

}编写一段程序,当点击“red”按钮时,矩形区域颜色为红色,点击“green”按钮时,矩形区域颜色为绿色,点击“blue”按钮时,矩形区域颜色为蓝色。package.ccut.test;

importjavax.swing.*;

importjava.awt.*;

importjava.awt.event.ActionEvent;

importjava.awt.event.ActionListener;

/**

*CreatedbyThinkon2016/6/4.

*/

publicclassTestextendsJFrameimplementsActionListener{

privateJPanelpanel0=null,panel2=null;

privateJButtonb1=null,b2=null,b3=null,b4=null;

publicTest(){

Containerc=this.getContentPane();

//边框布局

c.setLayout(newBorderLayout());

//创建panel

panel0=newJPanel();

panel2=newJPanel();

//为2个panel设置底色

panel0.setBackground(Color.red);

panel2.setBackground(Color.BLUE);

//2个panel都是用流水布局

panel0.setLayout(newFlowLayout());

panel2.setLayout(newFlowLayout());

//创建按钮

b1=newJButton("red");

b2=newJButton("green");

b3=newJButton("blue");

b4=newJButton("yellow");

/**

*添加按钮事件

*/

b1.addActionListener(this);

b2.addActionListener(this);

b3.addActionListener(this);

b4.addActionListener(this);

/**

*将按钮添加相应panel上

*/

panel0.add(b1);

panel0.add(newJLabel());

panel0.add(b2);

panel2.add(b3);

panel2.add(b4);

/**

*将panel添加到容器

*/

c.add(panel0,BorderLayout.CENTER);

c.add(panel2,BorderLayout.EAST);

this.setSize(500,500);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

this.setVisible(true);

}

publicstaticvoidmain(String[]args){

newTest();

}

@Override

publicvoidactionPerformed(ActionEvente){

//TODOAuto-generatedmethodstub

if(e.getSource()==b1){

panel2.setBackground(Color.red);

}elseif(e.getSource()==b2){

panel2.setBackground(Color.green);

}elseif(e.getSource()==b3){

panel0.setBackground(Color.blue);

}elseif(e.getSource()==b4){

panel0.setBackground(Color.yellow);

}

}

}编写一段程序,包含“确定”和“取消”两个按钮。当点击“确定”按钮时,在坐标(20,80)处,用绿色显示点击“确定”按钮的次数;当点击“取消”按钮时,在坐标(200,100)处,用红色显示点击“取消”按钮的次数(要求“确定”和“取消”的次数同时显示)。importjava.applet.Applet;

importjava.awt.*;

importjava.awt.event.ActionEvent;

importjava.awt.event.ActionListener;

/**

*CreatedbyThinkon2016/6/4.

*/

publicclassApplet1extendsAppletimplementsActionListener{

intj=0,k=0;

Buttonbtn1,btn2;

publicvoidinit(){

btn1=newButton("YES");

btn2=newButton("NO");

add(btn1);add(btn2);

btn1.addActionListener(this);

btn2.addActionListener(this);

}

publicvoidpaint(Graphicsg){

g.setColor(Color.green);

g.drawString("你点击了\"确定\"按钮"+j+"次",20,80);

g.setColor(Color.red);

g.drawString("你点击了\"取消\"按钮"+k+"次",20,100);

}

publicvoidactionPerformed(ActionEvente){

if(e.getSource()==btn1)j++;

if(e.getSource()==btn2)k++;

repaint();

}

}第八章【基础】1.下列(A)是输入/输出处理必须引入的。A.java.ioB.java.awtC.java.langD.java.util2.下列说法中,错误的是(B)。A.FileReader类提供将字节转换为Unicode字符的方法。B.InputStreamReader提供将字节转化为Unicode字符的方法。C.FileReader对象可以作为BufferedReader类的构造方法的参数。D.InputStreamReader对象可以作为BufferedReader类的构造方法的参数。3.下列(B)返回的是文件的绝对路径。A.getCanonicalPath()B.getAbsolutePath()C.getCanonicalFile()D.getAbsoluteFile()4.下列说法错误的是()。A.Java的标准输入对象为System.in。B.打开一个文件时不可能产生IOException异常。C.使用File对象可以判断一个文件是否存在。D.使用File对象可以判断一个目录是否存在。 5.所有字节流的基类是___OutputStream______和___InputStream______。 6.所有字符流的基类是____FileReader_____和___FileWriter_____。【应用】1.统计一个文件中字母“A”和“a”出现的总次数。importjava.io.FileInputStream;

/**

*CreatedbyThinkon2016/6/4.

*/

publicclasstimetest{

publicstaticvoidmain(String[]args)throwsException{

FileInputStreamaa=newFileInputStream("aaa.txt");//写文件路径+文件名

DataInputStreamhc=newDataInputStream(aa);

intcount=0;

bytez;

try{

while(true)

{

z=hc.readByte();

if(z==65||z==97)

count++;

}

}catch(Exceptionee)

{

System.out.print(count);

}

}

}2.利用RandomAccessFile类将一个文件的全部内容追加到另一个文件的末尾。publicclassaddtest{

publicstaticvoidmain(String[]args)throwsException{

Stringwj[]=newString[30];

RandomAccessFilesj1=newRandomAccessFile("addtest.java","r");

inti=0;

Strings="";

while((s=sj1.readLine())!=null)

{

wj[i]=s;;

i++;

}

sj1.close();

RandomAccessFilesj=newRandomAccessFile("aaa.txt","rw");

sj.length();

sj.seek(sj.length());

for(inta=0;a<wj.length;a++)

{

//sj.writeBytes("\r\n");

sj.writeBytes("\r\n"+wj[a]);

}

sj.close();

}

}第九章【基础】JDBC提供了哪几种连接数据库的方法?(1)JDBC-ODBC桥驱动程序#JDBC-ODBC桥接器负责将JDBC转换为ODBC,用JdbcOdbc.Class和一个用于访问ODBC驱动程序的本地库实现的。这类驱动程序必须在服务器端安装好ODBC驱动程序,然后通过JDBC-ODBC的调用方法,进而通过ODBC来存取数据库。

(2)Java到本地API这种类型的驱动程序是部分使用Java语言编写和部分使用本机代码编写的驱动程序,这类驱动程序也必须在服务器端安装好特定的驱动程序,如ODBC驱动程序,然后通过桥接器的转换,把JavaAPI调用转换成特定驱动程序的调用方法,进而操作数据库。

(3)网络协议搭配的Java驱动程序这种驱动程序将JDBC转换为与DBMS无关的网络协议,这种协议又被某个服务器转换为一种DBMS协议。这种网络服务器中间件能够将它的纯Java客户机连接到多种不同的数据库上。所用的具体协议取决于提供者。

(4)本地协议纯Java驱动程序这种类型的驱动程序将JDBC访问请求直接转换为特定数据库系统协议。不但无须在使用者计算机上安装任何额外的驱动程序,也不需要在服务器端安装任何中间程序,所有对数据库的操作,都直接由驱动程序来完成SQL语言包括哪几种基本语句来完成数据库的基本操作? Sql用来操作数据命令包括:select、insert、update、deleteStatement接口的作用是什么? Statement用于在已经建立的连接的基础上向数据库发送SQL语句的对象。它只是一个接口的定义,其中包括了执行SQL语句和获取返回结果的方法试述DriverManager对象建立数据库连接所用的几种不同的方法。(1)staticConnectiongetConnection(Stringurl):使用指定的数据库URL创建一个连接。

(2)staticConnectiongetConnection(Stringurl,Propertiesinfo):使用指定的数据库URL和相关信息(用户名、用户密码等属性列表)来创建一个连接,使DriverManager从注册的JDBC驱动程序中选择一个适当的驱动程序。

(1)staticConnectiongetConnection(Stringurl,Stringuser,Stringpassword):使用指定的数据库URL、用户名和用户密码创建一个连接,使DriverManager从注册的JDBC驱动程序中选择一个适当的驱动程序。

(2)staticDrivergetDriver(Stringurl):定位在给定URL下的驱动程序,让DriverManager从注册的JDBC驱动程序中选择一个适当的驱动程序。简述JDBC的工作原理。工作原理流程:装载驱动程序---->获得数据库连接---->使用Statement或PreparedStatement执行SQL语句---->返回执行的结果---->关闭相关的连接。【应用】模拟完成用户登录的基本功能,要求能实现从键盘输入用户名和密码后,验证其正确性,单击“登录”按钮,提示“登录成功”;若用户名或密码错误,提示“登录失败”;若用户名或密码为空,提示“用户名或密码不能为空”。代码2.模拟完成用户注册的功能,当用户输入用户名和密码后,单击“注册”按钮,提示“恭喜您,注册成功”;当输入的用户名已存在时,提示“该用户已存在,请重新注册”。(第一题,第二题代码)importjavax.swing.*;

importjava.awt.*;

importjava.awt.event.*;

importjava.io.*;

publicclassLoginextendsJPanel

{

//声明各个控件

privateJLabeluser_name_label=null;

privateJLabelpassword_label=null;

privateJTextFielduser_name_text=null;

privateJTextFieldpassword_text=null;

privateJButtonlogin=null;

privateJButtonregist=null;

//声明文件用以保存注册信息

privatefinalStringfile_name="注册.txt";

publicLogin()

{

//获得各个控件并且为之设置显示文本

user_name_label=newJLabel();

user_name_label.setText("姓名:");

password_label=newJLabel();

password_label.setText("密码:");

user_name_text=newJTextField();

password_text=newJTextField();

login=newJButton();

login.setText("登录");

regist=newJButton();

regist.setText("注册");

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论