12本Java上机实验课案_第1页
12本Java上机实验课案_第2页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

1、要求用户输入(BuffeiedReadei)三条边的长度(floatFloat.paiseFloat()),判断(if..else)并输出这三条边能否组成一个三角形。2、如果一个整数按反向顺序放置后仍然与原数相等,称为回文数(如:12321)。编程:要求用户输入一个5位的整数,判断此数是否为回文数。(注意:对一个5位整数n(int类型),要取出它的万位(11/10000)、千位(n%10000/1000).十位(n%100/10)和个位(n%10),如果万位==个位&&千位==十位,则为回文数)3、要求用户输入一个学生的成绩(0〜100),判断并输出该成绩的等级(switch)。switch(scoie/10){}4、要求用户输入一个年份和月份,判断该年该月有多少天。(switch)switch(month){case1:case3:case4:case6:case2:if0{}else{}break;default:}5、利用while循环计算1十4十7十10十13十16十19十...十586、利用while循环计算2十6+18十54十162十486十14587、1、求a+aa+aaa+aaaa+....+aaaaaaaaaaa的和,要求a(1〜9)由用户输入,式子的项数n也由用户输入。比如,2+22十222十2222+22222,a=2,n=5.p=p*10+a;sum=sum+p;〃式子有多少项,循环就是多少次〃循环体中先计算当前项(找到一个表达式表示前后两项的关系,//“前后两项”使用同一个变量p)〃然后累加到sum上8、请编程验证一下“角谷猜想”:对任意的自然数,若是奇数,就对它乘以3加1;若是偶数就对它除以2;这样得到一个新数,再按上述奇数、偶数的计算规则进行计算,一直进行下去,最终将得到1。如对自然数11,按上述规则依次得到34、17、52、26、13、40、20、10、5、16、8、4、2、1。要求用户输入一个自然数(正整数),然后编程输出依次变换最终得到1的过程。ndo{if(){n=n*3+1}else{}}wlule(n!=l);9、判断并输出500以内既能够被3整除乂能够被6整除的整数。〃图形有多少行,外层循环就是多少次〃观察图形一行有几部分组成,外层循环的内部就有几个循环,这些循环分别用来输出有变化规律每一部分〃根据每一部分的变化规律,找出内层的循环所需的次数10、***********11、***********12、搬砖问题:36块砖,36人搬,男人搬4块,女人搬3块,两个小孩抬1块。要求一次搬完,问需要男人、女人、小孩各几人?13、编写程序:输出如下图型(提示:将一行分为3部分,分别是空格、数字递增部分、数字递减部分)112112321123432112345432114、打印九九乘法表:123456789123456789246810121416183691215182124274812162024283236510152025303540456121824303642485471421283542495663816243240485664729182736455463728115、编写一个应用程序,要求用户输入5个整数(使用循环结构),输出这五个整数的最大值和最小值。max初始值要比用户输入的第一个数小iwn初始值要比用户输入的第一个数人iiitmax=Integer.\nN_\^ALUE;//-Matli.pow(2,31)iiitmiii=IntegeT・MAX_VALUE;//Math・pow(2、31)-116、定义一个方法能够判断并返回两个整数的最人值,并调用自己的方法测试是否正确。17、编程:要求用户输入一个字符串,按相反顺序输出该字符串。如输入abed,输出debao要求把一个字符串按相反顺序输出的过程定义为一个方法。18、编写一个方法用于求任意两个正整数的最大公约数,调用此方法求16和24的最人公约数。备注:求最人公约数使用辗转相除法,我国古代数学家秦九韶1247年在《数书九章》中记载了此方法,其处理过程如下:(1)提供两个数m和n(2)以n除m,求得余数r(i-m%n)(3)判断「是否为0,若r=0,此时的n值即为最人公约数,计算结束。若rHO,更新被除数和除数,11送m(即m=n),r送n(即n=r),转到(2)。xvhile(r!=0){m=n;n=i;i-m%n}19、不使用Math类提供的相关方法,自己编写一个方法publicintiound(doublen)能够对小数n进行四舍五入返回一个整数。注意考虑n的正负。用一些正的或负的的小数测试一卞自己编写的方法是否正确。(基本思想:n是一个小数,那么(mt)n则得到n的整数部分,n减去自己的整数部分以后,通过跟正或负0.5比较人小,可决定四舍五入后的整数是多少)〃一个方法没有static修饰符,称作实例方法(对象方法)【非静态方法】,一定要先创建该方法所在的类的对象(类名对象名类名();),才能通过“对象名.方法名([实参])”的形式来调用〃一个方法有static修饰符,称作类方法【静态方法】,可以通过“类名•方法名([实参])”形式调用,如果在类自身中调用,“类名“还可省略〃如果创建该方法所在的类的对象,也可(不推荐)通过“对象名•方法名([实参])“的形式来调用20、编写递归方法getPoWer(intx,mty),用于计算x的y次幕(假定x,y都是正整数)(不要使用Math.powQ),在main主方法中调用它求2的10次幕。21、编写递归方法gcd,返回x和y的最大公约数。x和y的最人公约数方法gcd的递归定义如下:如果y等于0,则gcd(x,y)就是x;否则,gcd(x,y)就等于gcd(y,x%y),其中“%”是求模运算符。22、定义一个数组来存储12个学生的成绩{72,89,65,58.87,91,53,82,71,93,76,68},计算并输出学生的平均成绩。23、定义一个数组来存储12个学生的成绩{72,89.65,58.87,91,53,82,71,93,76,68},统计各成绩等级(90分以上为'A',80-89分为,B',70〜79分为'C',60-69分为'D',60分以下为E)学生人数,并将其放入到数组count中,其中:count[0]存E级的人数,count[l]存D级的人数,……,count[4]存A级的人数。(提示:注意要找到各分数段同数组count的下标的关系,思想类似于课本上P215页的例子)//90以上count[4]-H-//80~89count[3]-H-〃70~79count[2]-H-//60〜69count[l]-H-//60以下count[0]++24、从键盘输入8个整数存放在一个数组中,然后将奇数和偶数分别存入到两个不同的数组中,并按奇数、偶数交替的顺序输出这两个数组中的所有数据(先交替输出,如呆奇数个数多,则再输出剩卞的奇数,如果偶数个数多,则再输出剩卞的偶数)。(提示与要求:(1)定义一个数组存储从键盘输入的8个整数,先判断这8个整数中奇数和偶数的个数,才能定义存储奇数和偶数的数组的长度:(2)把一个人的数组分别存放在奇数和偶数数组中并交替输出的过程定义为方法)25、实现如卞的排序算法:有一种简单的排序方法叫计数排序法,这种排序算法对一个待排序的数组进行排序,并将排序结果放到另一个新的数组中。计数排序算法针对待排序数组中的每个数据,扫描待排序的数组一趟,统计待排序数组中有多少个数据的值比该数据的值小。假设针对某一个记录,统计岀的计数值为c,那么,这个记录在新的有序数组中的合适的存放位置即为c。程序框架如下,补充完整:publicclassCountSon{publicstaticvoidcountSort(intn[])〃对数组n进行计数排序的方法mtm[]=newint[n.length];//^义排序后的数组mmtcount[]=newmt[n.length];//i己录数组n中某个数据在数组m中的位置a数组元素a[0]a[l]a[2]a[3]a[4]a[5]a[6]a[i]的值7406251count数组元素count[0]count[l]count[2]count[3]count[4]count[5]count[6]最终统计出的count[1]的值应该为6(代表比a[0]小的数有6个,a[0]在数组m中的下标应该为6)3(代表比a[l]小的数有3个,a[l]在数组m中的下标应该为3)0(代表比a[2]小的数有0个,a[2]在数组m中的卜标应该为0)52•••••41*/for(mti=O:i<m.length;i++)//输出排序后的数组{System.out.prmt(m[i]+H}System.ou匚pnn血();}publicstaticvoidniain(Strmg[]aigs){inta[]={7,4,062,5,1};CountSoit.countSoit(a);}}26、编写顺序查找的方法publicstaticint[]oidmalSearch(iiitdata[],mtkey),要求该方法返回一个数组(如果kev存在,数组中各元素的值分别为关键字key在原数组data中的各下标;如果key不存在,则返回一个长度为1的数组,数组元素为-1)。【基本过程:(1)先扫描数组data,统计数组中kev的个数n;(2)如果n为0,直接返回一个数组元素为一1的数组;否则的话定义一个数组mtmdex[]=newmt[n],再扫描数组data,把数组中值为key的各个元素的下标保存到数组mdex中,最后返回数组index]27、编写一个方法publicstaticint[][]dyadicAnaySort(mta[][]),能够实现对一个二维数组a进行升序排列,要求整个二维数组中最小的值为a[0][0],然后依次是a[O][l],a[0][2]....,a[l][O],a[l][l].....,使用一个无序的二维数组对你编写的方法进行检验。(基本思想:在方法体中,先将二维数组转换为一个一维数组,然后对一维数组进行排序,排好序后再将一维数组中的各个元素依次搬到二维数组中)28、(一)根据下面的要求实现人类Peoplea)人类People的成员变量:私有成员name表示姓名,为Strmg类型私有成员sex表示性别,为boolean类型(true表示男,false表示女)私有成员age表示年龄,为mt类型b)People类的构造方法(定义完成员方法再定义构造方法)(1)无参的构造方法PeopleQ,将各成员变量初始化为默认值(2)People(Stnngname,booleansex,intage)分别对姓名、性别、年龄进彳亍初始化(3)People(Stnngname,booleansex)分别对姓名、性别进彳亍初始化(4)People(Stnngname,intage)分别对姓名、年龄进行初始化c)人类People的成员方法:(1)设置姓名的公有方法setNameO(2)读取姓名的公有方法getNameQ(3)设置性别的公有方法setSexQ(4)读取性别的公有方法publicStringgetSex()如果sex为true,返回字符串”male”,否则返回字符串"female”(5)设置年龄的公有方法setAgeQ(6)读取年龄的公有方法getAgeQ(7)voiddisp()将人的姓名、性别、年龄输出到屏幕(二)建立类People的测试类,分别用各构造方法创建对象,然后输出该人的基本信息。在Eclipse中自动生成set和get方法:source—>generategettersandsetters在Eclipse中自动生成构造方法:source—>generateconstructerusingfields29、预备知识:static,final及finals阳c修饰符的使用,查看课件并编写程序进行深刻理解。(一)根据下面的要求实现圆类Cadea)圆类Circle的成员变量:私有最终静态成员P表示圆周率(初始化为Math.PI)私有成员radius表示圆的半径,为double类型b)圆类Circle的成员方法:Circle()构造方法,将半径置0Circle(doubler)构造方法,创建Circle对象时将半径初始化为rdoublegetRadius()获得圆的半径值voidsetRadius()设置圆的半径值读取圆周率P的方法(需要什么修饰符?)doublegetPeriineter()获得圆的周长doublegetAiea()获得圆的面积voiddisp()将圆的圆周率、半径、周长、面积输出到屏幕(二)建立圆类Circle的测试类CiicleTest,1)在没有圆类Cucle的任何对彖时,输出成员变量圆周率P的值。2)使用构造方法Cucle()创建对彖cl,并将半径设置为3.0,把圆cl的圆周率、半径、周长、面积输出到屏幕3)使用构造方法Circle(doubler)创建对象c2,并将半径初始化为5.2,把圆c2的圆周率、半径、周长、面积输出到屏幕注意:将上述两题的两个类(注意两个类是平行关系,Circle类不使用public修饰符,测试类要定义为public的)写到一个.java文件中即可。(三〉自己把上面的两个类写到两个Java文件中,在Circle中声明包,然后CircleTest类引入Circle类并使用;修改Circle类中成员变量和方法的控制符,验证不同控制符的访问范围。(无需提交作业)30、为提高你的编程速度,请学会使用Eclipse软件的代码自动生成功能(如自动生成构造方法、set和get方法,覆盖方法等)(一)根据下面的要求实现人类People<a)人类People的成员变量:私有成员name表示姓名,为String类型私有成员sex表示性别,为boolean类型,tme表示男,false表示女私有成员age表示年龄,为iiit类型(b)人类People的方法:(1)无参构造方法People(),将各成员变量初始化为默认值(2)构造方法People(Strmgn,booleans,iiita)(3)设置姓名的公有方法(4)读取姓名的公有方法(5)设置性别的公有方法(6)读取性别的公有方法publicStrmggetSex()如杲为true,返回male,否则返回female(7)设置年龄的公有方法(8)读取年龄的公有方法(8)voiddisp()将人的姓名、性别、年龄输出到屏幕(-)通过继承第1题中的人People类,派生学生类Student。要求如下:(a)学生类Student的成员变量:私有成员department表示所在院系,为String类型(b)学生类Student的方法:(1)无参构造方法Student(),将各成员变量初始化为默认值(2)构造方,去Student(Stringn,booleans,mta,Suingdep)设置院系的公有方法读取院系的公有方法voiddispO将学生的姓名、性别、年龄、所在院系输出到屏幕建立学生类Student的测试类StudentTest,任意建立一个学生对彖,并调用方法输出该学生的信息。注意:将上述三题的三个类分别写到三个jaw文件中,然后放到一个文件夹中,文件夹命名为“学号+姓名30”,然后将该文件夹压缩为一个压缩文件(压缩文件名仍为“学号+姓名30”),提交即可。31>(—)定义一个抽象类GeneralPeople,要求如下:(a)成员变量:私有成员name表示姓名,为String类型私有成员sex表示性别,为boolean类型,tine表示男,false表示女(b)方法:无参构造方法GeneralPeople(),将各成员变量初始化为默认值构造方》公GeneralPeople(Suingname,booleansex)设置姓名的公有方法读取姓名的公有方法设置性别的公有方法读取性别的公有方法publicStrmggetSex()如杲为true,返回male,否则返回female抽象方法publicabstractvoiddisp();根据抽彖类GeneralPeople派生出学生类Student(町学生类Student的成员变量:私有成员school表示所在学校,为Strung类型(b)学生类Student的方法:无参构造方法Student(),将各成员变量初始化为默认值(2)构造方》公Student(Strmgname,booleansex,Suingschool)设置学校的公有方法读取学校的公有方法实现方法disp(),将学生的姓名、性别、所在学校输出到屏幕根据学生类Student派生出人学生类CollegeStiident,要求如下:CollegeStudent的成员变量:私有成员specialty表示所学专业,为String类型CollegeStudent的方法:无参构造方法CollegeStudentO,将各成员变量初始化为默认值(2)构造方沙1CollegeStiident(Stringname,booleansex.Stringschool.Stringspecialty)设置专业的公有方法读取专业的公有方法voiddispO将学生的姓名、性别、年龄、所在学校、所学专业输出到屏幕建立抽象类GeneralPeople的测试程序,要求建立一个GeneralPeople类型的数组g,任意建立几个Student类型的对象和CoUegeStndent类型的对象,将这些对象依次赋值给数组g中的数组元素,用一个循环多态地调用方法dispQo注意:将上述4题的4个类分别写到4个jaw文件中,然后放到一个文件夹中,文件夹命名为“学号+姓名31”,然后将该文件夹压缩为一个压缩文件(压缩文件名仍为“学号+姓名31”),提交即可。32、接口在实际中更多的作用是用来制订标准的。比如说:“U盘(FlashDisk)和打印tJL(Pnnter)都可以插在电脑上使用,这是因为它们都实现了USB的接II,对于电脑来说,只要是符合了USB接「I标准的设备就都可以插进来使用,而无需关心到底是什么设备。请按要求实现以下各类:定义一个接口USE,其中包含两个抽象方法voidstart。和voidstop。。定义一个类FlasliDisk实现接IIUSE,并实现该接II中的两个抽象方法,在start。方法中输出如下语句“U盘已插入,可以开始读写数据”,在stop()方法中输出如下语句“U盘已弹出,无法继续读写数据”(3)定义一个类Prmter实现接IIUSB,并实现该接II中的两个抽象方法,在start。方法中输出如下语句“打印机已连接,可以开始打印”,在stop()方法中输出如下语句“打印机未连接或已停止”定义一个类ComputerpublicclassComputer{publicvoidplugin(USBusb)//表示设备的插入{usb.staitQ;System.out.prmthi(M===USB设备工作正常}_publicvoidpullout(USBusb)//表示设备的拔出{usb.stopQ;}}建立一个测试类,在main方法中创建一个Computer的对彖,并调用相应的方法表示插入和拔出一个U盘,插入和拔出一个打印机。注意:将上述5个类分别写到5个java文件中,然后放到一个文件夹中,文件夹命名为“学号+姓名”,然后将该文件夹压缩为一个压缩文件(压缩文件名为“学号+姓名32”),提交即可。

33、以3种不同的颜色和字体在窗体上绘制字符串“三八妇女节快乐!”。34、设计如卞界面(性别、年龄、学院、专业的输入可省略)要求如下:(1)在此界面“取消”按钮之后再增加一个组件“文本区域”用来显示信息(2)当用户点击“确定”按钮后,将刚输入的各种信息显示在一个“文本区域”中(3)当用户点击“取消”按钮后,该界面恢复到初始状态,学号后的文本框获得输入焦点。按钮上的图标使用如下的两个图标:(在“上机指导”文件夹中查找)込(只提交.java文件即可,不要提交压缩包)'注意文件命名格式“学号+姓名”设计如下图形用户界面,要求程序具备以下功能:(1)要求“学院”下拉列表与“专业”下拉列表具有联动效果,“学院”的选项与所对应的“专业”选项自由添加;(2)把“年龄”后的文本框修改为“下拉列表框”;(2)点击“确定”按钮在文本区域中以添加方式显示刚输入的信息;(3)点击“取消”按钮清空各文本框里的内容,各复选框都未被选中,“学号”后的文本框获得输入焦点。

所需两个图标如下:(在“上机指导”文件夹中查找)36、完成课本上P495页13.21的程序。编写一个“猜数”程序:该程序随机在1-1000的范闱中选择一个供用户猜测的整数。然后在界面上显示如卞标签:给你一个1〜1000的随机数请你猜,请输入你猜的数。应使用一个JTextField来输入猜的数。在输入猜数时,JTextField的背景颜色应变为红色或蓝色,红色表示用户猜的太人,蓝色表示用户猜的太小。同时在JTextField后通过一个Jlabel显示“你猜人了”或“你猜小了”,以帮助用户接近正确答案,在用户猜对时,应显示“你猜对了”,并且用于输入的JTextField变为不可编辑状态。另外提供一个JButton,在单击该Jbutton按钮时,应产生一个新的随机数,并且用于输入的JTextField变为可编辑状态。提示:(1)供用户猜测的数(1〜1000的随机数(int)(Math.random()*1000)+l)在窗体的“构造函数”当中生成,即窗体显示出来的时候供用户猜的数已经确定;(2)完成题中功能需对“用来输入猜测数的文本框JTestField"注册KeyListener监听器,实现该接II时在方法publicvoidkeyReleased(KeyEventargO)中书写相应程序,即把文本框中用户的输入的数读取过来,转换成整数,与要猜的真实数据比较,如呆比较小,文本框背景色为蓝色;如果比较人,文本框背景色为红色:如果与要猜的数相等,文本框变为不可编辑。37、学习课件或课本上菜单的创建。根据界面完成卜•列菜单设计(整个窗体的中心区域为一个文本区域):程序功能描述:(1)整个内容面板上为一个文本区(JTextAiea),初始时文本区不可用。(2)当用户点击“文件”一“打开”时,文本区可用,在文本区任意显示一些文字(3)当用户点击“文件”一“关闭”时,文本区回复到初始状态(4)当用户点击“文件”一“退出”时,关闭应用程序(5)用户点击“查看”可改变文字的颜色和字体风格(6)文本区的弹出式菜单(如第一副图所示)具备复制、、剪切、粘贴、删除功能38、(1)读卞列程序,为蹄体代码行添加异常处理。(提交作业)publicclassException22{publicstaticvoidmain(Stringargs[])fintaQ;Stiiiigs;charch;a=newmt[4];a[0]=Iiiteger.parsehit(nabcn);a[4]=0;s=newStnng(HOKH);ch=s.charAt(-l);System.out.prmtln(Ha[0]=n+a[0]);System,out.pnn血(”ch=”+ch);}}要求:添加上异常处理代码后,祖科滋代码行产生的3种异常都能够产生,然后捕获并输出异常信息。(2)查看课件,学习使用“自定义异常”。(无需提交作业)39、修改36题的猜数程序,要求通过一个线程来实现上述功能。注意不要再给“文本框”注册“键盘监听器”。提示:(1)定义一个线程类,它的nm()方法内为一个“死循坏”,形如“while(ti-ue){……}”,也就是说线程只要一启动并运行,就开始不停地从窗体的“文本框”中读取数据,并转换成整数,与要猜的真实数据进行比较,如果比较小,文本框背景色变为蓝色;如果比较大,文本框背景色变为红色;如果与要猜的数相等,文本框变为不可用,同时使用“retum”结束线程的run方法。另外在文本框旁边用一个“标签”提示用户“猜人了”“猜小了”或“猜对了”。(2)在窗体的构造函数中创建该线程并启动(调用start()方法),也就是说只要窗体一创建并显示,线程也已经创建并开始读取数据了,虽然此时“文本框”中没有任何内容,实际编程时注意异常的处理(使用try...catch),否则线程读不到数据也转换不成整数,会出现异常。(3)用户点击“重玩”按钮时重新创建一个线程并启动。40、(1)阅读并运行下列程序,此题不需提交作业。思考问题:理解清楚该程序实现了什么样的功能?是如何实现的?窗体上显示的时间是否准确?unportjava.awt.*;unportjavax.swing.*;importjava.util.Date;//导入需要的类库publicclassTmieClockextendsJFrameimplementsRunnable{Tlueadclock//定义一个线程publicTimeClock(){superb数字时钟”);tins.setFont(newFont(nTunesNewRoniann,Fout.BOLD,60));//设置字体人小tlus.goQ;//自定义go方法,用于以后开启线程tliis.setSize(280,100);tlus.setVisible(tme);}publicvoidruD(){while(true)//让线程一直进行{repamtQ;try{Tluead.sleep(lOOO);//参数是亳杪,1秒即1000亳秒}catch(hitenuptedExceptione){}}}publicvoidgo(){if(clock=null){clock=newTluead(tliis);clock.staitQ;//开启线程,实现mn方法}}publicvoidstop(){clock=null;}publicvoidpaiiit(Graphicsg)//在框架上显示时间{Strings=";Datenow=newDateQ;〃取得系统当前口期和时间mthoui-now.getHours();//在Eclipse卜使用该方法会警告mtnunute=now.getMmutes();mtsecond=now.getSeconds();s=hour+H:n+mmute+H:,,+second;g.setColor(Color.wliite);Dimensiondmi=getSize();g・fillRect(O,0,dim.width,dim.height);//把背景涂成白色g.setColor(Color.red);g・diawString(s,20,80);}publicstaticvoidniain(Striiig[]aigs){TuneClockthat=newTuneClockQ;that.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}}(2)阅读并运行下列程序,将该实例进行修

温馨提示

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

评论

0/150

提交评论