java复习资料打印_第1页
java复习资料打印_第2页
java复习资料打印_第3页
java复习资料打印_第4页
java复习资料打印_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

第2章标识符、关键字和数据类型4.下列哪些语句是错误的:intx=8;byteb=127;b=x;答:b=x语句错误;原因是高级别的变量赋值给低级别的变量时,一定要用显式转换即b=(byte)x;。5.下列程序的输出结果是什么?publicclassE{publicstaticvoidmain(Stringargs[]){long[]a={1,2,3,4};long[]b={100,200,300,400,500};b=a;System.out.println("数组b的长度:"+b.length);System.out.println("b[0]="+b[0]);}}答:数组b的长度:4b[0]=16.上机运行下列程序,注意观察输出结果。publicclassE{publicstaticvoidmain(Stringargs[]){for(inti=20302;i<20322;i++){System.out.println((char)i);}}}答:低住佐佑佒体佔何佖佗佘余佚佛作佝佞佟你佡7.System.out.println(“你好”);可输出字符串,也可以使用System.out.println()输出变量或表达式的值,只需使用并置符号“+”将变量、表达式或一个常数值与一个字符串并置即可,如:System.out.println(“”+x);System.out.println(“:”+123+“大于”+122);等。上机调试下列程序,注意观察结果,特别注意System.out.print()和System.out.println()的区别。publicclassOutputData{publicstaticvoidmain(Stringargs[]){intx=234,y=432;System.out.println(x+"<"+(2*x));System.out.print("我输出结果后不回车");System.out.println("我输出结果后自动回车到下一行");System.out.println("x+y="+(x+y));System.out.println(""+x+y+"=234432");}}答:234<468我输出结果后不回车我输出结果后自动回车到下一行x+y=666234432=2344328.编写一个Java应用程序,输出全部的希腊字母。答:publicclassXLWords{publicstaticvoidmain(Stringargs[]){for(inti=913;i<930;i++){System.out.print((char)i+"");}for(intj=931;j<938;j++){System.out.print((char)j+"");}for(intk=945;k<962;k++){System.out.print((char)k+"");}for(intt=963;t<969;t++){System.out.print((char)t+"");}}}运算符、表达式和语句1.下列程序的输出结果是什么?publicclassE{publicstaticvoidmain(Stringargs[]){charx='你',y='e',z='吃';if(x>'A'){y='爱';z='情';}elsey='我';z='她';System.out.println(""+x+y+z);}}答:你爱她2.下列程序的输出结果是什么?publicclassE3{publicstaticvoidmain(Stringargs[]){charc='\0';for(inti=1;i<=4;i++){switch(i){case1:c='b';System.out.print(c);case2:c='e';System.out.print(c);break;case3:c='p';System.out.print(c);default:System.out.print("!");}}}}答:beep!!3.编写应用程序,求1!+2!+…+10!。答:classFact{publicstaticvoidmain(Stringargs[]){intfact,sum=0;for(inti=1;i<=10;i++){fact=1;for(intj=1;j<=i;j++)fact*=j;sum+=fact;}System.out.println("1到10的阶乘之和是:"+sum);}}4.编写一个应用程序,求100以内的全部素数。答:classPrimes{publicstaticvoidmain(Stringargs[]){intw=1;for(inti=2;i<=100;i++){for(intj=2;j<i;j++){w=i%j;if(w==0)break;}if(w!=0)System.out.println(i+"是素数");}}}5.分别用do―while和for循环计算1+1/2!+1/3!+1/4!+…的前20项和。答:①for循环classSum{publicstaticvoidmain(Stringargs[]){intfact;doublesum=0;for(inti=1;i<=20;i++){fact=1;for(intj=1;j<=i;j++)fact*=j;sum+=1.0/fact;}System.out.println(sum);}}②do―while循环classSum{publicstaticvoidmain(Stringargs[]){inti=1;intfact;doublesum=0;do{fact=1;intj=0;while(++j<=i)fact*=j;sum+=1.0/fact;}while(++i<=20);System.out.println(sum);}}6.一个数如果恰好等于它的因子之和,这个数就称为“完数”。编写应用程序,求1000之内的所有完数。答:classWanshu{publicstaticvoidmain(Stringargs[]){intx,i,sum;for(x=1;x<=1000;x++){sum=0;for(i=1;i<x;i++){if(x%i==0)sum+=i;}if(x==sum)System.out.println(x+"是完数");}}}7.编写应用程序,分别使用while和for循环计算8+88+888+…前10项之和。答:①for循环classTheSum{publicstaticvoidmain(Stringargs[]){longsum=0,data=8;for(inti=1;i<=10;i++){sum=sum+data;data=data*10+8;}System.out.println(sum);}}②while循环classTheSum{publicstaticvoidmain(Stringargs[]){longsum=0,data=8,i=0;while(++i<=10){sum=sum+data;data=data*10+8;}System.out.println(sum);}}8.编写应用程序,输出满足1+2+3+…+n<8888的最大正整数n。答:classMaxn{publicstaticvoidmain(Stringargs[]){intk=1,sum=0;while((sum+=k)<8888)k++;k--;System.out.println("最大能取到:"+k);}}第4章类、对象和接口13.请写出下列程序的输出结果。classA{publicintf(intx){returnx+1;}}classBextendsA{publicintf(intx){returnx*x;}}publicclassE{publicstaticvoidmain(Stringargs[]){Aa=newB();intm=a.f(10);System.out.println(m);}}答:10014.请写出下列程序的输出结果。classA{intx;publicvoidsetX(intx){this.x=x;}intgetX(){returnx;}}classB{publicvoidf(Aa){a.setX(100);}}publicclassE{publicstaticvoidmain(Stringargs[]){Aa=newA();a.setX(8);System.out.println(a.getX());Bb=newB();b.f(a);System.out.println(a.getX());}}答:810016.编写一个类A,该类创建的对象可以调用方法f输出英文字母表,然后再编写一个该类的子类B,要求子类B必须继承A类的方法f(不允许重写),子类创建的对象不仅可以调用方法f输出英文字母表,而且调用子类新增的方法g输出希腊字母表。答:classA{intm;voidf(){for(m=65;m<91;m++)System.out.print((char)m+"");for(m=97;m<123;m++)System.out.print((char)m+"");System.out.println("");}}classBextendsA{inti;voidg(){for(i=913;i<930;i++)System.out.print((char)i+"");for(i=931;i<938;i++)System.out.print((char)i+"");for(i=945;i<962;i++)System.out.print((char)i+"");for(i=963;i<970;i++)System.out.print((char)i+"");System.out.println("");}}publicclassTest{publicstaticvoidmain(Stringargs[]){Bb=newB();System.out.println("我调用方法f输出英文字母表:");b.f();System.out.println("我调用方法g输出希腊字母表:");b.g();}}17.编写一个异常类MyException,再编写一个类Student,该类有一个产生异常的方法publicvoidspeak(intm)throwsMyException,要求参数m的值大于1000时,方法抛出一个MyException对象。最后编写主类,在主类的main方法中用Student创建一个对象,让该对象调用speak方法。答:classMyExceptionextendsException{Stringstr1;MyException(intm){str1=m+"出现错误可能造成的原因是取值大于1000";}publicvoidshowStr1(){System.out.println(str1);}}classStudent{publicvoidspeak(intm)throwsMyException{if(m>1000){MyExceptionexception=newMyException(m);throwexception;}elseSystem.out.println(m);}}publicclassTest{publicstaticvoidmain(Stringagrs[]){intm;Studentstu1=newStudent();m=987;try{stu1.speak(m);m=1234;stu1.speak(m);}catch(MyExceptione){e.showStr1();}}}18.编写一个类,该类有一个方法publicintf(inta,intb),该方法返回a和b的最大公约数。然后再编写一个该类的子类,要求子类重写方法f,而且重写的方法将返回a和b的最小公倍数。要求在重写的方法的方法体中首先调用被隐藏的方法返回a和b的最大公约数m,然后将乘积(a*b)/m返回。要求在应用程序的主类中分别使用父类和子类创建对象,并分别调用方法f计算两个正整数的最大公约数和最小公倍数。答:classA{publicintf(inta,intb){if(a<b){inttemp=0;temp=a;a=b;b=temp;}intr=a%b;while(r!=0){a=b;b=r;r=a%b;}returnb;}}classBextendsA{publicintf(inta,intb){intm;m=super.f(a,b);return(a*b)/m;}}publicclassTest{publicstaticvoidmain(Stringargs[]){Aa=newA();System.out.println("18和102的最大公约数是:"+a.f(18,102));Bb=newB();System.out.println("18和102的最小公倍数是:"+b.f(18,102));}}第6章时间、日期和数字1.用Data类不带参数的构造方法创建日期,要求日期的输出格式是:星期小时分秒。答:importjava.util.*;importjava.text.*;classTest{publicstaticvoidmain(Stringargs[]){Date时间=newDate();SimpleDateFormats=newSimpleDateFormat("EHH时mm分ss秒");System.out.println(s.format(时间));}}3.计算某年、某月、某日和某年、某月、某日之间的天数间隔。要求年、月、日通过main方法的参数传递到程序中。答:importjava.util.*;classTest{publicstaticvoidmain(Stringargs[]){Calendarc=Calendar.getInstance();c.set(2000,0,1);longtime1=c.getTimeInMillis();c.set(2008,7,8);longtime2=c.getTimeInMillis();longdayCous=(time2-time1)/(1000*60*60*24);System.out.println("2008年8月8日和2000年1月1日相隔"+dayCous+"天");}}5.使用BigInteger类计算1!+3!+5!+7!+…的前30项的和。答:importjava.math.*;publicclassTest{publicstaticvoidmain(Stringargs[]){BigIntegersum=newBigInteger("0"),jieCheng=newBigInteger("1"),ONE=newBigInteger("1"),i=ONE;intk=0;while(++k<=30){sum=sum.add(jieCheng);i=i.add(ONE);jieCheng=jieCheng.multiply(i);i=i.add(ONE);jieCheng=jieCheng.multiply(i);}System.out.println(sum);}}第7章AWT组件及事件处理6.编写一个应用程序,有一个标题为“计算”的窗口,窗口的布局为FlowLayout布局。设计4个按钮,分别命名为“加”、“差”、“积”、“除”,另外,窗口中还有3个文本框。单击相应的按钮,将两个文本框的数字做运算,在第三个文本框中显示结果。要求处理NumberFormatException。答:importjava.awt.*;importjava.awt.event.*;classCalculatedextendsFrameimplementsActionListener{TextFieldtext1,text2,text3;//3个文本框ButtonbuttonH,buttonC,buttonJ,buttonS;//4个按钮Calculated(Strings){super(s);setLayout(newFlowLayout());//FlowLayout布局text1=newTextField(10);text2=newTextField(10);text3=newTextField(17);buttonH=newButton("加");buttonC=newButton("差");buttonJ=newButton("积");buttonS=newButton("除");add(text1);add(text2);add(text3);text3.setEditable(false);add(buttonH);add(buttonC);add(buttonJ);add(buttonS);buttonH.addActionListener(this);buttonC.addActionListener(this);buttonJ.addActionListener(this);buttonS.addActionListener(this);addWindowListener(newWindowAdapter(){publicvoidwindowClosing(WindowEvente){System.exit(0);}});setBounds(100,100,160,180);setVisible(true);validate();}publicvoidactionPerformed(ActionEvente){doublenum1=0,num2=0,totle=0;try{num1=Double.parseDouble(text1.getText());num2=Double.parseDouble(text2.getText());if(e.getSource()==buttonH){totle=num1+num2;text3.setText("和"+totle);}elseif(e.getSource()==buttonC){totle=num1-num2;text3.setText("差"+totle);}elseif(e.getSource()==buttonJ){totle=num1*num2;text3.setText("积"+totle);}elseif(e.getSource()==buttonS){totle=num1/num2;text3.setText("商"+totle);}}catch(NumberFormatExceptionevent){text3.setText("请输入数字字符!");}}}publicclassTest{publicstaticvoidmain(Stringargs[]){Calculatedcalc=newCalculated("计算");//标题为“计算”的窗口}}8.写一个应用程序,要求编写一个Panel的子类MyPanel,MyPanel中有一个文本框和一个按钮,要求MyPanel的实例作为其按钮的ActionEvent事件的监视器,当单击按钮时,程序获取文本框中的文本,并将该文本作为按钮的名称。然后在编写一个Frame的子类,即窗口。窗口的布局为BorderLayout布局。窗口中添加两个MyPanel面板,分别添加到窗口的东部区域和西部区域。答:importjava.awt.*;importjava.awt.event.*;classMyPanelextendsPanelimplementsActionListener{Stringname;TextFieldtext;Buttonbutton;MyPanel(){text=newTextField(10);button=newButton("确定");add(text);add(button);button.addActionListener(this);addWindowListener(newWindowAdapter(){publicvoidwindowClosing(WindowEvente){System.exit(0);}}}publicvoidactionPerformed(ActionEvente){if(e.getSource()==button){name=text.getText();button.setLabel(name);}}}classMyFrameextendsFrame{MyPanelpanel1,panel2;MyFrame(){panel1=newMyPanel();panel2=newMyPanel();add(panel1,BorderLayout.EAST);add(panel2,BorderLayout.WEST);setBounds(100,100,400,100);setVisible(true);validate();}}publicclassTest{publicstaticvoidmain(Stringargs[]){MyFramewin=newMyFrame();}}9.参照例子7.18编写一个应用程序,要求有一个画布,在画布上绘制一个矩形,用户通过文本框输入矩形的宽和高以及矩形左上角的位置坐标。答:importjava.awt.*;importjava.awt.event.*;classMycanvasextendsCanvas{intx,y,w,h;Mycanvas(){setBackground(Color.cyan);}publicvoidsetX(intx){this.x=x;}publicvoidsetY(inty){this.y=y;}publicvoidsetW(intw){this.w=w;}publicvoidsetH(inth){this.h=h;}publicvoidpaint(Graphicsg){g.drawRect(x,y,w,h);}}classWindowCanvasextendsFrameimplementsActionListener{Mycanvascanvas;TextFieldtext1,text2,text3,text4;Buttonbutton;WindowCanvas(){canvas=newMycanvas();text1=newTextField(4);text2=newTextField(4);text3=newTextField(5);text4=newTextField(5);PanelpNorth=newPanel(),pSouth=newPanel();button=newButton("确定");button.addActionListener(this);pNorth.add(newLabel("矩形的宽:"));pNorth.add(text3);pNorth.add(newLabel("矩形的高:"));pNorth.add(text4);pSouth.add(newLabel("左上角位置坐标:"));pSouth.add(text1);pSouth.add(text2);pSouth.add(button);addWindowListener(newWindowAdapter(){publicvoidwindowClosing(WindowEvente){System.exit(0);}});add(canvas,BorderLayout.CENTER);add(pNorth,BorderLayout.NORTH);add(pSouth,BorderLayout.SOUTH);setBounds(100,100,500,500);setVisible(true);validate();}publicvoidactionPerformed(ActionEvente){intx,y,w,h;try{x=Integer.parseInt(text1.getText());y=Integer.parseInt(text2.getText());w=Integer.parseInt(text3.getText());h=Integer.parseInt(text4.getText());canvas.setX(x);canvas.setY(y);canvas.setW(w);canvas.setH(h);canvas.repaint();}catch(NumberFormatExceptionee){x=0;y=0;w=0;h=0;}}}publicclassTest{publicstaticvoidmain(Stringargs[]){newWindowCanvas();}}10.编写应用程序,有一个窗口对象,该窗口取它的默认布局:BorderLayout布局,北面添加一个List组件,该组件有四个商品名称的选项。中心添加一个文本区,当选择List组件中的某个选项后,文本区显示对该商品的价格和产地:当双击List组件中的某个选项后,文本区显示该商品的详细广告。答:importjava.awt.*;importjava.awt.event.*;classWindowGoodsextendsFrameimplementsActionListener,ItemListener{Strings[]={"产地:北京","产地:上海","产地:沈阳","产地:广东"};Stringp[]={"价格:3200","价格:158","价格:13.2","价格:320/打"};Stringa[]={"本商品****","本商品*****","本商品******","本商品*******"};Listlist;TextAreatext;WindowGoods(){list=newList(3,false);text=newTextArea(6,20);text.setEditable(false);list.add("商品1");list.add("商品2");list.add("商品3");list.add("商品4");add(list,BorderLayout.NORTH);add(text,BorderLayout.CENTER);list.addItemListener(this);list.addActionListener(this);addWindowListener(newWindowAdapter(){publicvoidwindowClosing(WindowEvente){System.exit(0);}});setBounds(100,100,300,300);setVisible(true);validate();}publicvoiditemStateChanged(ItemEvente){if(e.getItemSelectable()==list){intm=list.getSelectedIndex();text.setText(p[m]+'\n'+s[m]);}}publicvoidactionPerformed(ActionEvente){intn=list.getSelectedIndex();text.setText(a[n]);}}publicclassTest{publicstaticvoidmain(Stringargs[]){newWindowGoods();}}Java多线程机制11.参照例子9.11编写一个应用程序,有两个线程,一个负责模仿垂直上抛运动,另一个模仿45°的抛体运动。答:importjava.awt.*;importjava.awt.event.*;publicclassTest{publicstaticvoidmain(Stringargs[]){MyFrameframe=newMyFrame();frame.setBounds(10,10,500,500);frame.setVisible(true);frame.addWindowListener(newWindowAdapter(){publicvoidwindowClosing(WindowEvente){System.exit(0);}});}}classMyFrameextendsFrameimplementsRunnable{Thread红色球,蓝色球;MyCanvasred,blue;doublet=0;MyFrame(){红色球=newThread(this);蓝色球=newThread(this);red=newMyCanvas(Color.red);blue=newMyCanvas(Color.blue);setLayout(null);add(red);add(blue);red.setLocation(60,100);blue.setLocation(60,100);红色球.start();蓝色球.start();}publicvoidrun(){while(true){t=t+0.2;intv0=20;if(t>20)t=0;if(Thread.currentThread()==红色球){intx=60;inth=300-((int)(v0*t-1.0/2*t*t*3.8)+60);red.setLocation(x,h);try{红色球.sleep(50);}catch(InterruptedExceptione){}}elseif(Thread.currentThread()==蓝色球){intx=60+(int)(26*t);inth=300-((int)(v0*t-1.0/2*t*t*3.8)+60);blue.setLocation(x,h);try{蓝色球.sleep(50);}catch(InterruptedExceptione){}}}}}classMyCanvasextendsCanvas{Colorc;MyCanvas(Colorc){setSize(20,20);this.c=c;}publicvoidpaint(Graphicsg){g.setColor(c);g.fillOval(0,0,20,20);}}12.参照例子9.14,模拟3个人排队买票,张某、李某和赵某买电影票,售票员只有3张五元的钱,电影票五元一张。张某拿二十元一张的人民币排在李某的前面买票,李某排在赵某的前面拿一张十元的人民币买票,赵某拿一张五元的人民币买票。答:importjava.awt.*;importjava.awt.event.*;publicclassTest{publicstaticvoidmain(Stringargs[]){newMyFrame();}}classMyFrameextendsFrameimplementsRunnable,ActionListener{售票员王小姐;Thread张某,李某,赵某;staticTextAreatext;Buttonstart=newButton("排队买票");MyFrame(){王小姐=new售票员();//只有3张五元钱电影票五元一张张某=newThread(this);//二十元排在最前面李某=newThread(this);//十元排在中间赵某=newThread(this);//五元排在最后text=newTextArea(10,30);start.addActionListener(this);add(text,BorderLayout.CENTER);add(start,BorderLayout.NORTH);setVisible(true);setSize(360,300);validate();addWindowListener(newWindowAdapter(){publicvoidwindowClosing(WindowEvente){System.exit(0);}});}publicvoidactionPerformed(ActionEvente){try{张某.start();李某.start();赵某.start();}catch(Exceptionexp){}}publicvoidrun(){if(Thread.currentThread()==张某){王小姐.售票规则(20);}elseif(Thread.currentThread()==李某){王小姐.售票规则(10);}elseif(Thread.currentThread()==赵某){王小姐.售票规则(5);}}}class售票员{int五元钱个数=3,十元钱个数=0,二十元钱个数=0;Strings=null;publicsynchronizedvoid售票规则(intmoney){if(money==5){五元钱个数=五元钱个数+1;s="给您入场卷您的钱正好";MyFrame.text.append("\n"+s);}elseif(money==10){whil

温馨提示

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

评论

0/150

提交评论