java面向对象程序的设计(董小园版)_第1页
java面向对象程序的设计(董小园版)_第2页
java面向对象程序的设计(董小园版)_第3页
java面向对象程序的设计(董小园版)_第4页
java面向对象程序的设计(董小园版)_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

.PAGE.目录第1章了解Java2第2章面向对象的"对象"7第3章对象的属性变量详述9第4章对象的行为成员方法详述12第5章生命周期及作用域17第6章Java常用类与函数库19第7章对象的进一步探讨--面向对象中的继承22第8章深入多态26第9章使用异常处理28第10章基于Swing的图形界面编程29第11章可视化程序的事件处理38第12章Java多线程机制51了解Java编写一个程序,将用户在命令行输入的24小时制时间转换为12小时制。publicclassTimeTest{ publicstaticvoidmain<Stringargs[]>{ inttime;time=Integer.parseInt<args[0]>;if<time<0||time>24> System.out.println<"输入的不是一个合法时间!">; elseif<time>12> System.out.println<"12小时制为"+<time-12>+"点">; else System.out.println<"12小时制为"+time+"点">; }}用户输入x的数值,根据如下规则输出计算后的结果y值。x <x<1>Y=2x-1 <1<=x<10> 3x-11 <x>=10>publicclassCalculateTest{ publicstaticvoidmain<Stringargs[]>{ floatx,y;x=Float.parseFloat<args[0]>;if<x<1> y=x; elseif<1<=x&&x<10>y=2*x-1; else y=3*x-11; System.out.println<y>;}}编写一个Java应用程序,由命令行参数输入一个百分制成绩,要求打印出成绩等级"A"、"B"、"C"、"D"、"E"。90分以上为"A";80~89分为"B";70~79分为"C";60~69分为"D";60分以下为"E"。要求使用switch语句实现。运行效果如图2所示:图1publicclassPrintGrade{ publicstaticvoidmain<String[]args>{ doublescore=Double.parseDouble<args[0]>; if<score<0||score>100> System.out.println<"错误,不是一个合法的百分制成绩!">; else{ ints=<<int>score>/10; chargrade; switch<s>{ case10: case9:grade='A';break; case8:grade='B';break; case7:grade='C';break; case6:grade='D';break; default:grade='E'; } System.out.println<"成绩是:"+score+",相应的等级是"+grade>; } }}假设今天是星期日,编写一个程序,求n天后是星期几。要求:n的数值由命令行输入;使用switch语句实现。publicclassDateTest{ publicstaticvoidmain<String[]args>{ intn=Integer.parseInt<args[0]>; switch<n%7>{ case0:System.out.println<n+"天后是星期天">;break; case1:System.out.println<n+"天后是星期一">;break; case2:System.out.println<n+"天后是星期二">;break; case3:System.out.println<n+"天后是星期三">;break; case4:System.out.println<n+"天后是星期四">;break; case5:System.out.println<n+"天后是星期五">;break; case6:System.out.println<n+"天后是星期六">;break; } }}用户在命令行输入一个数字,按照数字输出相应个数的星号。publicclassPrintStar{ publicstaticvoidmain<String[]args>{ intn=Integer.parseInt<args[0]>; inti; for<i=1;i<=n;i++> System.out.print<"*">; System.out.println<>; }}编写程序,求0到100之间的偶数和。要求:分别用while语句、dowhile语句和for循环语句实现。while实现:publicclassSumDemo1{ publicstaticvoidmain<String[]args>{ intsum=0,i=0;while<i<=100>{ if<i%2==0> sum=sum+i; i++; } System.out.println<"0--100之间所有偶数的和是"+sum>; }}dowhile实现:publicclassSumDemo2{ publicstaticvoidmain<String[]args>{ intsum=0,i=0;do{ if<i%2==0> sum=sum+i; i++; }while<i<=100>; System.out.println<"0--100之间所有偶数的和是"+sum>; }}for循环实现:publicclassSumDemo3{ publicstaticvoidmain<String[]args>{ intsum=0,i=0;for<;i<=100;i=i+2> sum=sum+i; System.out.println<"0--100之间所有偶数的和是"+sum>; }}输入一个大于1的整数,求1到这个数的阶乘。用三种循环语句实现。提示:5的阶乘表示为5!,计算公式:5!=1*2*3*4*5while实现:publicclassFactorial1{ publicstaticvoidmain<String[]args>{ intnum=Integer.parseInt<args[0]>; intresult=1; if<num<1> System.out.println<"应输入大于1的整数!">; else{ inti=1;while<i<=num>{ result=result*i; i++; } System.out.println<num+"的阶乘是"+result>; } }}dowhile实现:publicclassFactorial2{ publicstaticvoidmain<String[]args>{ intnum=Integer.parseInt<args[0]>; intresult=1; if<num<1> System.out.println<"应输入大于1的整数!">; else{ inti=1;do{ result=result*i; i++; }while<i<=num>; System.out.println<num+"的阶乘是"+result>; } }}for循环实现:publicclassFactorial3{ publicstaticvoidmain<String[]args>{ intnum=Integer.parseInt<args[0]>; intresult=1; if<num<1> System.out.println<"应输入大于1的整数!">; else{inti; for<i=1;i<=num;i++> result=result*i; System.out.println<num+"的阶乘是"+result>; } }}用for循环语句打印九九乘法表。publicclassMultiplication{ publicstaticvoidmain<String[]args>{ inti,j; for<i=1;i<=9;i++>{ for<j=1;j<=i;j++> System.out.print<i*j+"\t">; System.out.println<>; } }}面向对象的"对象"1.定义一个描述长方体的类Box,类中有三个整型的成员变量:length、width和height,分别表示长方体的长、宽和高。定义setInfo<int,int,int>方法设置这三个变量的值;定义volumn<>方法求长方体的体积并返回整型结果;定义area<>方法求长方体的表面积并返回整型结果;定义toString<>方法把长方体的长、宽、高,以及长方体的体积和表面积转化为字符串并返回字符串。编写Java应用程序,测试类Box,使用类中定义的各个方法,并将其结果输出。classBox{ intlength,width,height; publicsetInfo<intl,intw,inth>{ length=l; width=w; height=h; } publicintvolumn<>{ returnlength*width*height; } publicintarea<>{ return<length*width+length*height+width*height>*2; } publicStringtoString<>{ return"Length:"+length+"width:"+width+"height:"+height +"volumn:"+volumn<>+"area:"+area<>; }}publicclassBoxTest{ publicstaticvoidmain<String[]args>{ Boxb=newBox<>;b.setInfo<5,2,4>; System.out.println<b.toString<>>; }}2.定义一个圆形类Circle,类中有一个用来描述半径的double型成员变量r,定义setR<double>方法初始化半径;定义getArea<>方法求圆形的面积并返回double类型结果;定义getPerimeter<>方法求圆形的周长并返回double类型结果。编写Java应用程序,使用Circle类创建两个对象,通过相应方法分别设置不同的半径值,计算各自的面积及周长并显示结果。classCircle{ doubler; voidsetR<doubleradius>{ r=radius; } doublegetArea<>{ return3.14*r*r; } doublegetPerimeter<>{ return2*3.14*r; }}publicclassCircleTest{ publicstaticvoidmain<String[]args>{ Circlec1=newCircle<>; Circlec2=newCircle<>; c1.setR<1>; c2.setR<2>; System.out.println<"c1的面积是"+c1.getArea<>+",c1的周长是"+c1.getPerimeter<>>; System.out.println<"c2的面积是"+c2.getArea<>+",c2的周长是"+c2.getPerimeter<>>; }}对象的属性变量详述1.编写程序,计算如下表达式的值,将结果输出。〔13.5+1/2+56%103.5+1.0/2+56%10inta=4%3*7+1publicclassTest{ publicstaticvoidmain<String[]args>{ System.out.println<3.5+1/2+56%10>; System.out.println<3.5+1.0/2+56%10>; inta=4%3*7+1; System.out.println<a>; }}程序运行结果:9.510.082.思考下列语句执行后变量a、b、c、d的值分别是多少:inta=5,b=8,c,d;c=<a++>*b;d=<++a>*b;执行后的结果是:a=7b=8c=40d=563.自定义一个字符串数组,提示用户输入5个字符串,通过循环语句实现将用户输入的字符串存放到数组里,然后反向输出这五个字符串。importjava.util.Scanner;publicclassTest{ publicstaticvoidmain<String[]args>{ Scannerreader=newScanner<System.in>; Stringstr[]=newString[5]; inti; for<i=0;i<5;i++>{ System.out.println<"请输入第"+<i+1>+"个字符串">; str[i]=reader.next<>; } System.out.println<"反向输出这5个字符串:">; for<i=4;i>=0;i--> System.out.println<str[i]>; }}4.定义一个实型数组用来存放学生成绩,提示用户确定成绩的个数,根据个数创建数组。提示用户输入每个成绩,为各数组元素赋值。询问用户要查找第几个同学的成绩,显示相应的查询结果,如果超出个数范围则进行相应提示。importjava.util.*;publicclassSearch1{ publicstaticvoidmain<String[]args>{ Scannerreader=newScanner<System.in>; doublescore[]; System.out.println<"您要输入多少个同学的成绩?">; intnum=reader.nextInt<>; score=newdouble[num]; for<inti=0;i<num;i++>{ System.out.println<"请输入第"+<i+1>+"个同学的成绩">; score[i]=reader.nextDouble<>; } System.out.println<"您要查找第几个同学的成绩?">; intindex=reader.nextInt<>; if<index>=1&&index<=num-1> System.out.println<"第"+index+"个同学的成绩是"+score[index-1]>; else System.out.println<"数据不在合法范围内,无法查找。">; }}5.在第4题的基础上进行改写,修改查询条件:询问用户要查找分数为多少的成绩,找到相应的成绩则显示第几位同学符合查询条件,找不到相应的成绩则显示没有该成绩,如果超出成绩范围则进行相应提示。importjava.util.*;publicSearch2{publicstaticvoidmain<String[]args>{ Scannerreader=newScanner<System.in>; doublescore[]; System.out.println<"您要输入多少个同学的成绩?">; intnum=reader.nextInt<>; score=newdouble[num]; for<inti=0;i<num;i++>{ System.out.println<"请输入第"+<i+1>+"个同学的成绩">; score[i]=reader.nextDouble<>; } System.out.println<"您要查找的成绩是?">; doubles=reader.nextDouble<>; booleanflag=false; if<s>=0&&s<=100>{ for<inti=0;i<num;i++>{ if<score[i]==s>{ System.out.println<"第"+<i+1>+"个同学符合查询条件">; flag=true; } } if<!flag> System.out.println<"没有学生考该分数成绩">; } else System.out.println<"成绩非法,不能查询。">;} }6.提示用户输入一个整数,再提示用户输入一个符号。在屏幕上输出该整数个这样的符号。importjava.util.*;classCharTest{ publicstaticvoidmain<String[]args>{ Scannerreader=newScanner<System.in>; System.out.println<"请输入一个整数">; intn=reader.nextInt<>; System.out.println<"请输入一个符号">; charch=reader.next<>.charAt<0>; for<inti=1;i<=n;i++> System.out.print<ch>; System.out.println<>; }}对象的行为成员方法详述1.编写Java应用程序,定义一个计算两个整数和的方法staticintadd<intop1,intop2>。在main方法中声明两个整型变量,分别赋值,调用add<>方法得到它们的和,在屏幕上输出结果。publicclassAddTest{ publicstaticvoidmain<String[]args>{intnum1,num2; num1=10; num2=20; System.out.println<num1+"+"+num2+"="+add<num1,num2>>; } staticintadd<intop1,intop2>{ returnop1+op2; }}2.编写程序,定义一个方法publicstaticvoidabs<inta>,用来求绝对值并输出结果。在main方法中从命令行读入一个整数,调用这个结果求它的绝对值。importjava.util.Scanner;publicclassDemo{ publicstaticvoidmain<String[]args>{Scannerreader=newreader<System.in>; System.out.println<"请输入一个整数">; intn=reader.nextInt<>; abs<n>; } publicstaticvoidabs<inta>{ if<a>=0> System.out.println<"绝对值是"+a>; else<"绝对值是"+<-a>>; }}3.在上述题目的基础上,修改abs成为带返回值的方法,即publicstaticintabs<inta>,实现相同的功能。importjava.util.Scanner;publicclassDemo{ publicstaticvoidmain<String[]args>{Scannerreader=newreader<System.in>; System.out.println<"请输入一个整数">; intn=reader.nextInt<>; System.out.println<"绝对值是"+abs<n>>; } publicstaticintabs<inta>{ if<a>=0> returna; else return-a; }}4.定义一个方法publicstaticvoiddraw<intn,charch>,实现输出n个ch符号。在main方法中提示用户输入相应数据,调用draw方法输出图形。importjava.util.Scanner;publicclassMultiplication{ publicstaticvoidmain<String[]args>{ Scannerreader=newScanner<System.in>; System.out.println<"要显示哪个符号?">; charc=reader.next<>.charAt<0>; System.out.println<"要显示多少个?">; intnum=reader.nextInt<>; draw<num,c>; } publicstaticvoiddraw<intn,charch>{ for<inti=1;i<=n;i++> System.out.print<ch>; System.out.println<>; }}5.求数值累加和的方法publicclassApp4{staticintsum<intn>{ints=0;for<inti=1;i<=n;i++>s+=i;returns;}publicstaticvoidmain<String[]s>{System.out.println<"1~10的累加和是"+sum<10>>;}}6.定义一个类Initial,类的内部重载initArr<>方法,分别实现对整型数组、双精度型数组、字符串数组的初始化功能,数组作为方法的参数,方法体内提示用户为数组元素输入数据,然后显示所有元素。在mian方法中创建三种类型的数组,创建Initial类的对象,分别调用initArr<>方法进行初始化。importjava.util.*;publicclassOverLoad2{ publicstaticvoidmain<String[]args>{ //TODOAuto-generatedmethodstub Scannerreader=newScanner<System.in>; Initialinit=newInitial<>; inta[]=newint[6]; init.initArr<a>; doubleb[]=newdouble[5]; init.initArr<b>; Strings[]=newString[3]; init.initArr<s>; }}classInitial{ Scannerreader=newScanner<System.in>; voidinitArr<intarr[]>{ System.out.println<"初始化整型数组">; for<inti=0;i<arr.length;i++>{ System.out.println<"请输入第"+<i+1>+"个整数">; arr[i]=reader.nextInt<>; } System.out.println<"整型数组初始化完毕,所有元素为:">; for<inti=0;i<arr.length;i++> System.out.print<arr[i]+"">; System.out.println<"\n">; } voidinitArr<doublearr[]>{ System.out.println<"初始化双精度型数组">; for<inti=0;i<arr.length;i++>{ System.out.println<"请输入第"+<i+1>+"个双精度数">; arr[i]=reader.nextDouble<>; } System.out.println<"双精度型数组初始化完毕,所有元素为:">; for<inti=0;i<arr.length;i++> System.out.print<arr[i]+"">; System.out.println<"\n">; } voidinitArr<Stringarr[]>{ System.out.println<"初始化字符串型数组">; for<inti=0;i<arr.length;i++>{ System.out.println<"请输入第"+<i+1>+"个字符串">; arr[i]=reader.next<>; } System.out.println<"字符串型数组初始化完毕,所有元素为:">; for<inti=0;i<arr.length;i++> System.out.print<arr[i]+"">; System.out.println<"\n">; }}7.定义一个类MathDemo,类的内部重载round<>方法,分别实现对单精度、双精度类型数据进行四舍五入的功能,要处理的实型数据作为参数,方法体最后将得到的结果返回。在mian方法中定义float与double类型变量,分别赋好初值,创建MathDemo类的对象,调用round<>方法,将结果显示在屏幕上。importjava.util.*;publicclassOverLoad3{ publicstaticvoidmain<String[]args>{ //TODOAuto-generatedmethodstub floatx=3.475f; doubley=3432.934; System.out.println<x+"四舍五入后为"+MathDemo.round<x>>; System.out.println<y+"四舍五入后为"+MathDemo.round<y>>; }}classMathDemo{ staticScannerreader=newScanner<System.in>; staticintround<floata>{ intn=<int>a; if<a-n>=0.5> returnn+1; else returnn; } staticlonground<doublea>{ longn=<long>a; if<a-n>=0.5> returnn+1; else returnn; }}生命周期及作用域定义一个按身高计算标准体重的类StdWeight,其中包含两个静态的成员方法:forMale<doubleh>计算男子标准体重、forFemale<doubleh>计算女子标准体重,两个方法均带返回值。在应用程序类的main方法中提示用户输入身高和性别,调用StdWeight类的方法得到标准体重,显示结果。计算公式:标准体重<男>=<身高cm-100>x0.9<kg>标准体重<女>=<身高cm-100>x0.9<kg>-2.5<kg>正常体重:标准体重+-<多少10%.提示:控制实数保留N位小数:<如保留2位小数>cimalFormat;doublenum=21.3749;DecimalFormatdf=newDecimalFormat<"0.00">;Strings=df.format<num>;//21.37参考代码:importjava.util.*;importjava.text.*;publicclassDemo{ publicstaticvoidmain<String[]args>{ Scannerreader=newScanner<System.in>; System.out.println<"请输入您的身高<单位厘米>">; doubleheight=reader.nextDouble<>; System.out.println<"请选择您的性别:1.男2.女">; intsex=reader.nextInt<>; DecimalFormatdf=newDecimalFormat<"0.00">; if<sex==1> System.out.println<"标准体重是"+df.format<StdWeight.forFemale<height>>+"公斤">; elseif<sex==2> System.out.println<"标准体重是"+df.format<StdWeight.forMale<height>>+"公斤">; else System.out.println<"您输入的选择不正确。">; }}classStdWeight{ staticdoubleforMale<doubleh>{ return<h-100>*0.9; } staticdoubleforFemale<doubleh>{ return<h-100>*0.9-2.5; }}Java常用类与函数库提示用户输入三角型两边边长与其夹角度数,利用公式s=1/2absin<c>计算三角型面积,输出结果。注意:正弦值的计算对象是弧度制的角,需将角度转换为弧度:π/180。importjava.util.Scanner;importjava.text.DecimalFormat;classDemo{ publicstaticvoidmain<String[]args>{ Scannerreader=newScanner<System.in>; System.out.println<"请输入三角型两边边长">; doublea=reader.nextDouble<>; doubleb=reader.nextDouble<>; System.out.println<"请输入两边夹角度数">; doubleangle=reader.nextDouble<>; doubles=0.5*a*b*Math.sin<angle*Math.PI/180>; DecimalFormatdf=newDecimalFormat<"0.00">; Stringarea=df.format<s>; System.out.println<"该三角型面积是"+area>; //System.out.println<Math.sin<90>>; }}编写Java应用程序,使用Vector向量来保存用户输入的若干字符串。循环读入用户输入的字符串,以end作为结束。将所有字符串显示出来。在所有字符串的中间位置插入"NICE",再次显示所有字符串。importjava.util.Vector;importjava.util.Scanner;classDemo{ publicstaticvoidmain<String[]args>{ Scannerreader=newScanner<System.in>; Vectorvct=newVector<1,1>;rintln<"请输入字符串,以输入end作为结束">; Stringstr; do{ str=reader.next<>; vct.add<str>; }while<!str.equals<"end">>; System.out.println<"您刚才输入的所有字符串是:">; System.out.println<vct.toString<>>; System.out.println<"插入NICE到中间位置:">; intn=vct.capacity<>; vct.insertElementAt<"NICE",n/2>; System.out.println<vct.toString<>>; }}3.显示InputDialog输入对话框实现对用户输入的英文单词进行简单处理〔转换为大写、转换为小写、反转显示。程序运行效果如下图:importjavax.swing.JOptionPane;classDemo{ publicstaticvoidmain<String[]args>{ Stringstr=JOptionPane.showInputDialog<"请输入一个英文单词">; str=str.trim<>; String[]items={"转换为大写","转换为小写","反转显示"}; ObjectselectedValue=JOptionPane.showInputDialog<null,"请选择","输入",JOptionPane.INFORMATION_MESSAGE,null,items,items[0]>; Stringchoice=<String>selectedValue; if<choice.equals<"转换为大写">> JOptionPane.showMessageDialog<null,str.toUpperCase<>,"操作结果",JOptionPane.INFORMATION_MESSAGE>; elseif<choice.equals<"转换为小写">> JOptionPane.showMessageDialog<null,str.toLowerCase<>,"操作结果",JOptionPane.INFORMATION_MESSAGE>; else JOptionPane.showMessageDialog<null,<newStringBuffer<str>.reverse<>>,"操作结果",JOptionPane.INFORMATION_MESSAGE>; }}对象的进一步探讨--面向对象中的继承定义一个球类Ball,包含一个私有成员变量半径〔doubler,两个公有成员方法:设定半径值方法〔voidsetR<doublex>、得到半径值方法〔doublegetR<>。定义一个台球类Billiards,继承Ball类,包含一个私有成员变量颜色〔Stringcolor,两个公有成员方法:设定颜色方法〔voidsetCol<Stringclo>、输出信息方法〔voidshow<>,其中show方法可以输出该台球的颜色和半径值。定义一个公有类,测试前两个类。classBall{ privatedoubler; publicvoidsetR<doublex>{ r=x; } publicdoublegetR<>{ returnr; }}classBilliardsextendsBall{ privateStringcolor; publicvoidsetCol<Stringcol>{ color=col; } publicvoidshow<>{ System.out.println<"台球的颜色是"+color+",半径是"+getR<>>; }}publicclassDemo{ publicstaticvoidmain<String[]args>{ Ballb1=newBall<>; b1.setR<10>; System.out.println<"球的半径是"+b1.getR<>>; Billiardsb2=newBilliards<>; b2.setR<5>; b2.setCol<"蓝色">; b2.show<>; }}定义材料类Material,包含:保护的成员变量名称、单价〔Stringname;doubleprice;为数据初始化赋值的构造方法;公有的成员方法得到所有信息〔publicStringtoString<>。定义木材类Wood,继承自材料类。包含:私有的成员变量颜色〔Stringcol;为数据初始化赋值的构造方法;覆盖公有的成员方法得到所有信息〔publicStringtoString<>。定义公共类,测试上述两个类的使用。思考:程序中把木材类中toString<>方法的public去掉会产生什么结果?为什么?程序中把材料类中toString<>方法的public去掉会产生什么结果?为什么?classMaterial{ protectedStringname; protecteddoubleprice; Material<Stringn,doublep>{ name=n; price=p; } publicStringtoString<>{ returnname+"的价格是"+price; }}classWoodextendsMaterial{ privateStringcol; Wood<Stringn,doublep,Stringc>{ super<n,p>; col=c; } publicStringtoString<>{ returnname+"的价格是"+price+",颜色是"+col; }}publicclassDemo{ publicstaticvoidmain<String[]args>{ Materialm=newMaterial<"XX石",1000>; System.out.println<m.toString<>>; Woodw=newWood<"檀木",1200,"红棕">; System.out.println<w.toString<>>; }}思考题:木材类中toString<>方法的public去掉程序会出错,因为该方法由材料类继承而来,子类覆盖父类的方法时不能缩小其访问权限,public去掉就会变成包访问权限,此处不能去掉。材料类中toString<>方法的public去掉会产生同样的问题,因为toString方法不是材料类自定义的,是所有类的父类Object类提供的。3.改写例7-8,给Shape类增加构造方法,能够对颜色进行初始化设置,思考两个子类的构造方法该如何修改才能使程序正常运行。classDemo{ publicstaticvoidmain<String[]args>{ Circlec=newCircle<"blue",1>; c.printInfo<>; Rectanglerect=newRectangle<"green",3,4>; rect.printInfo<>; }}classShape{ Stringcolor; Shape<Stringc>{ color=c; } doublegetArea<>{ return0; }}classCircleextendsShape{ doubleradius; Circle<Stringc,doubler>{ super<c>; radius=r; } doublegetArea<>{ returnMath.PI*radius*radius; } voidprintInfo<>{ System.out.println<"圆的颜色是:"+color+"面积是"+getArea<>>; }}classRectangleextendsShape{ doublewidth,height; Rectangle<Stringc,doublew,doubleh>{ super<c>; width=w; height=h; } doublegetArea<>{ returnwidth*height; } voidprintInfo<>{ System.out.println<"矩形的颜色是:"+color+"面积是"+getArea<>>; }}深入多态1.要使程序运行后出现如下结果,该如何修改程序代码。去掉Person类前面的final,去掉Student类中show<>方法前面的final。classPerson{ Stringname; charsex; Person<>{} Person<Stringn,chars>{ name=n; sex=s; } voidshow<>{ System.out.println<"nameis"+name+",sexis"+sex>; }}classStudentextendsPerson{ intnumber; Student<>{} Student<Stringn,chars,intnum>{ name=n; sex=s; number=num; } voidshow<>{ System.out.println<"nameis"+name+",sexis"+sex+",numberis"+number>; }}classPupilextendsStudent{ doublehcScore; Pupil<>{} Pupil<Stringn,chars,intnum,doublehcs>{ name=n; sex=s; number=num; hcScore=hcs; } voidshow<>{ System.out.println<"nameis"+name+",sexis"+sex+",numberis"+number+",Scoreis"+hcScore>; }}publicclassApp01{ publicstaticvoidmain<String[]s>{ Personp=newPerson<"小明",'男'>; p.show<>; Studentstu=newStudent<"小明",'男',101>; stu.show<>; Pupilpu=newPupil<"小明",'男',101,95>; pu.show<>; }} 2.求正方形的面积a>创建一个接口IShape,接口中有一个抽象方法publicdoublearea<>;b>定义一个类square,且实现IShape接口。square类有一个属性表示正方形的边长;构造方法初始化该边长。c>定义一个主类,在此类中,创建square类的实例,求该正方形面积。interfaceIShape{ publicdoublearea<>;}classsquareimplementsIShape{ doublelength; publicsquare<doublel>{ length=l; } publicdoublearea<>{ returnlength*length; }}publicclassTest{ publicstaticvoidmain<String[]args>{ squares=newsquare<5>; System.out.println<s.area<>>; }}使用异常处理1.查阅API文档,选择一个比较了解的Java系统异常,例如ArrayIndexOutofBoundsException〔数组越界异常,编程创建并抛出这个异常的实例。运行这个程序并观察执行结果。可参考本章例题。2.询问用户是哪个年级的同学,对输入的数据进行保存,将结果显示在屏幕上。要求合法年级为1、2、3,自定义异常类GradeException,对输入非法的情况进行异常处理。不同情况下程序运行结果:你是几年级同学?你是几年级同学?7输入了不存在的年级!你是几年级同学?3你是3年级的同学~!importjava.util.Scanner;classGradeExceptionextendsException{ GradeException<Stringmsg>{ super<msg>; }}publicclassDemo{ staticvoidgrade<intg>throwsGradeException{ if<g!=1&&g!=2&&g!=3>{ GradeExceptione=newGradeException<"输入了不存在的年级!">; throwe; } else System.out.println<"你是"+g+"年级的同学~!">; } publicstaticvoidmain<String[]args>{ Scannerreader=newScanner<System.in>; System.out.println<"你是几年级同学?">; intinput=reader.nextInt<>; try{grade<input>;} catch<GradeExceptione>{ System.out.println<e.getMessage<>>; } }}基于Swing的图形界面编程1.编写程序,实现如下效果:importjavax.swing.*;importjava.awt.*;publicclassGUIDemo{ publicstaticvoidmain<String[]args>{ JFramefrm=newJFrame<"MyFirstFrame">; frm.setSize<300,300>; frm.setLocationRelativeTo<null>; JPanelcontentPane=newJPanel<>; frm.setContentPane<contentPane>; Colorc=newColor<170,255,150>; contentPane.setBackground<c>; Iconicon=newImageIcon<"China.png">; uttonbtn=newutton<"中国",icon>; btn.setBackground<Color.YELLOW>; btn.setForeground<Color.BLUE>; Fontfont=newFont<"华文行楷",Font.BOLD,48>; btn.setFont<font>; contentPane.add<btn>; frm.setDefaultCloseOperation<JFrame.DISPOSE_ON_CLOSE>; frm.setVisible<true>; }}2.用标签实现如下效果://MyFrame.javaimportjavax.swing.*;importjava.awt.*;publicclassMyFrameextendsJFrame{ MyFrame<Strings>{ super<s>; setSize<300,300>; setLocationRelativeTo<null>; JPanelcontentPane=newJPanel<>; setContentPane<contentPane>; contentPane.setBackground<Color.BLACK>; Iconicon=newImageIcon<"images.jpeg">; JLabellab1=newJLabel<icon>; icon=newImageIcon<"China.png">; JLabellab2=newJLabel<icon>; JLabellab3=newJLabel<"天佑中华">; Fontfont=newFont<"华文行楷",Font.BOLD,48>; lab3.setFont<font>; lab3.setForeground<Color.YELLOW>; contentPane.add<lab1>; contentPane.add<lab2>; contentPane.add<lab3>; setDefaultCloseOperation<JFrame.DISPOSE_ON_CLOSE>; setVisible<true>; }}//GUIDemo.javapublicclassGUIDemo{ publicstaticvoidmain<String[]args>{ MyFramefrm=newMyFrame<"祈祷~~">; }}3.编写程序,完成以下界面的设计和显示:10行,20列20字符宽40010行,20列20字符宽400320320//GUIDemo.javapublicclassGUIDemo{ publicstaticvoidmain<String[]args>{ MyFramefrm=newMyFrame<"注册界面">; }}//MyFrame.javaimportjavax.swing.*;importjava.awt.*;publicclassMyFrameextendsJFrame{ privateJComboBoxcmbMonth; privateJLabellabID,labPW,labPW2,labResume,labSex,labCardType,labCardID,labAgree; privateJTextFieldtxfID,txfCard; privateJPasswordFieldpwf1,pwf2; privateJTextAreatxaResume; privateJRadioButtonrdbMale,rdbFemale; privateButtonGroupgrp; privateJComboBoxcmbCard; privateJCheckBoxchkAgree; MyFrame<Strings>{ super<s>; setSize<320,400>; setLocationRelativeTo<null>; JPanelcontentPane=newJPanel<>; setContentPane<contentPane>; labID=newJLabel<"用户名:">; txfID=newJTextField<20>; labPW=newJLabel<"密码:">; pwf1=newJPasswordField<20>; pwf1.setEchoChar<'*'>; labPW2=newJLabel<"确认密码:">; pwf2=newJPasswordField<20>; pwf2.setEchoChar<'*'>; labResume=newJLabel<"个人简介:">; txaResume=newJTextArea<10,20>; labSex=newJLabel<"性别:">; rdbMale=newJRadioButton<"男">; rdbFemale=newJRadioButton<"女">; grp=newButtonGroup<>; grp.add<rdbMale>; grp.add<rdbFemale>; labCardType=newJLabel<"证件类型:">; StringcardType[]={"身份证","护照","学生证","驾驶证","军官证","其他"}; cmbCard=newJComboBox<cardType>; labCardID=newJLabel<"证件号码:">; txfCard=newJTextField<20>; labAgree=newJLabel<"同意服务条款:">; chkAgree=newJCheckBox<"我已经看过并同意使用协议">; contentPane.add<labID>; contentPane.add<txfID>; contentPane.add<labPW>; contentPane.add<pwf1>; contentPane.add<labPW2>; contentPane.add<pwf2>; contentPane.add<labResume>; contentPane.add<txaResume>; contentPane.add<labSex>; contentPane.add<rdbMale>; contentPane.add<rdbFemale>; contentPane.add<labCardType>; contentPane.add<cmbCard>; contentPane.add<labCardID>; contentPane.add<txfCard>; contentPane.add<labAgree>; contentPane.add<chkAgree>; setDefaultCloseOperation<JFrame.EXIT_ON_CLOSE>; setVisible<true>; }}4.完成下图所示的界面设计并显示出来://MenuFrame.javaimportjavax.swing.*;publicclassMenuFrameextendsJFrame{ privateJMenuBarmenuBar; privateJMenufileMenu,subopenMenu,editMenu,supoptionMenu; privateJMenuItemnewItem,saveItem,exitItem,copyItem,pasteItem; privateJMenuItemdocItem,pptItem,xlsItem; privateJCheckBoxMenuItemlinewrapItem; privateJRadioButtonMenuItemfullItem,normalItem; MenuFrame<Strings>{ super<s>; setSize<200,300>; this.setLocationRelativeTo<null>; menuBar=newJMenuBar<>;//菜单条 setJMenuBar<menuBar>; fileMenu=newJMenu<"文件">;//"文件"菜单 newItem=newJMenuItem<"新建">; saveItem=newJMenuItem<"保存">; exitItem=newJMenuItem<"退出">; subopenMenu=newJMenu<"打开">;//"打开"子菜单 Iconicon=newImageIcon<"icon_doc.gif">; docItem=newJMenuItem<"word文档",icon>; icon=newImageIcon<"icon_ppt.gif">; pptItem=newJMenuItem<"ppt幻灯片",icon>; icon=newImageIcon<"icon_xls.gif">; xlsItem=newJMenuItem<"xls表格",icon>; subopenMenu.add<docItem>; subopenMenu.add<pptItem>; subopenMenu.add<xlsItem>; fileMenu.add<newItem>;//"文件"菜单组合 fileMenu.add<subopenMenu>; fileMenu.add<saveItem>; fileMenu.addSeparator<>; fileMenu.add<exitItem>; editMenu=newJMenu<"编辑">;//"编辑"菜单 copyItem=newJMenuItem<"复制">; pasteItem=newJMenuItem<"粘贴">; supoptionMenu=newJMenu<"选项">;//"选项"子菜单 linewrapItem=newJCheckBoxMenuItem<"自动换行">; fullItem=newJRadioButtonMenuItem<"全屏显示">; normalItem=newJRadioButtonMenuItem<"正常显示">; ButtonGroupgrp=newButtonGroup<>; grp.add<fullItem>; grp.add<normalItem>; supoptionMenu.add<linewrapItem>; supoptionMenu.addSeparator<>; supoptionMenu.add<fullItem>; supoptionMenu.add<normalItem>; editMenu.add<copyItem>;//"编辑"菜单组合 editMenu.add<pasteItem>; editMenu.addSeparator<>; editMenu.add<supoptionMenu>; menuBar.add<fileMenu>;//菜单放置到菜单条 menuBar.add<editMenu>; this.setDefaultCloseOperation<JFrame.DISPOSE_ON_CLOSE>; setVisible<true>; }}//GUIDemo.javapublicclassDemo{ publicstaticvoidmain<String[]args>{ MenuFramefrm=newMenuFrame<"菜单演示">; }}5.把面板和布局管理配合在一起使用,实现显示如下界面:运行后试着调整窗体的尺寸,观察窗体内组件的变化。//GUIDemo.javapublicclassGUIDemo{ publicstaticvoidmain<String[]args>{ MyFramefrm=newMyFrame<"计算器">; }}//MyFrame.javaimportjavax.swing.*;importjava.awt.*;publicclassMyFrameextendsJFrame{ JTextFieldtxfResult=newJTextField<>; MyFrame<Strings>{ super<s>; setSize<250,200>; setLocationRelativeTo<null>; JPanelcontentPane=newJPanel<>; setContentPane<contentPane>; contentPane.setLayout<newBorderLayout<>>; PanNumberpan=newPanNumber<>; contentPane.add<txfResult,BorderLayout.NORTH>; contentPane.add<pan>; setDefaultCloseOperation<JFrame.EXIT_ON_CLOSE>; setVisible<true>; }}//PanNumber.javaimportjavax.swing.JPanel;importjavax.swing.

温馨提示

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

评论

0/150

提交评论