您好,欢迎访问三七文档
学生实验报告实验课程名称Java程序设计开课实验室学院级专业班学生姓名大帅哥圆学号开课时间2015至2016学年第2学期评分细则评分报告表述的清晰程度和完整性(30分)程序设计的正确性(40分)实验结果的分析和体会(30分)总成绩实验一一、思考题试调试修改下列程序。使之得到正确结果1,编写程序求1+3+5+7+……+99的和值。classhe{publicstaticvoidmain(String[]args){intnumber=1;intsum;for(;number100;number+=2){sum+=number;}System.out.println(1+3+5+7+……+99=+sum);}}二、实验内容改sum=0即可。实验二一、思考题1、输入一个数据n,计算斐波那契数列(Fibonacci)的第n个值112358132134规律:一个数等于前两个数之和2、歌德巴赫猜想,任何一个大于六的偶数可以拆分成两个质数的和,打印出所有的可能。要求任意输入一个偶数,并拆分成两个质数的和。二、实验内容1.importjava.util.Scanner;publicclasssk1{publicintf(intn){if(n==1||n==2){return1;}elsereturnf(n-1)+f(n-2);}publicstaticvoidmain(String[]args){Scannersc=newScanner(System.in);inta=sc.nextInt();//输入a就输出第a个位置的值System.out.println(newsk1().f(a));}}2.packagehomework;importjava.util.Scanner;publicclassgdbh{publicstaticbooleanzhishu(intn){for(inti=2;in-1;i++){if(n%i==0)returnfalse;}returntrue;}publicstaticvoidmain(String[]args){System.out.println(输入一个大于6的偶数我可以把它拆成两个质数的和);Scannersc=newScanner(System.in);inta=sc.nextInt();if(a%2!=0||a=6){System.err.println(请输入大于6的偶数);}else{for(intj=1;ja/2;j++){if(zhishu(j)&&zhishu(a-j)){System.out.println(第一个数为+j+第二个数为+(a-j));}}}}}实验三一、思考题1、编程采用冒泡法实现对数组元素由小到大排序,冒泡法排序对相邻的两个元素进行比较,并把小的元素交换到前面。提示:关键代码如下:for(i=0;iintArray.length-1;i++)for(j=i+1;jintArray.length;j++)if(intArray[i]intArray[j]){t=intArray[i];intArray[i]=intArray[j];intArray[j]=t;}2、数组实验:利用数组解决约瑟夫环问题。设有n个人围做一圈并按顺时针方向从1到n编号,从第s个人开始进行1到m报数,报数到第m的人出圈,再从其下一个人重新开始从1到m的报数,如此进行下去知道所有的人都出圈为止。给出这n个人出圈的顺序。二、实验内容1.publicclassmaopao{publicstaticvoidmaopao(intintArray[]){for(inti=0;iintArray.length-1;i++)for(intj=i+1;jintArray.length-i-1;j++)//-i-1减少复杂度if(intArray[j]intArray[j+1]){//比较邻数,前比后大就交换,大数往后走intt=intArray[j+1];intArray[j+1]=intArray[j];intArray[j]=t;}System.out.print(排序后的数组为:);for(intm=0;mintArray.length;m++){System.out.print(intArray[m]+);}}publicstaticvoidmain(String[]args){//主函数做测试int[]a={1,2,3,3,3,8,9,5,4,65,16,3,8};maopao(a);}}2.packagehomework;importjava.util.Scanner;publicclassLinkedList{//定义结点,必须是staticstaticclassNode{intdata;Nodenext;Node(intarg1){this.data=arg1;}}publicstaticvoidmain(String[]args){intn=0,m=0;//定义总人数n,和出圈数字m//输入n和mSystem.out.println(输入总人数n,出圈数字m);Scannerscanner=newScanner(System.in);n=scanner.nextInt();m=scanner.nextInt();//初始化循环列表,头结点first和尾结点pNodefirst=newNode(1);first.next=first;Nodep=first;for(inti=2;i=n;i++){Nodetemp=newNode(i);temp.next=p;p.next=temp;p=p.next;}p.next=first;//尾接头形成循环链表(p为尾结点)//执行出圈操作System.out.println(出圈顺序为:);while(p!=p.next){//下面for循环后,p是第m个结点的前一个结点for(inti=1;im+1;i++)p=p.next;//删除第m个结点System.out.print(p.next.data+);p.next=p.next.next;}}}实验四一、思考题1、定义一个类实现银行帐户的概念,包括的变量有帐号和存款余额,包括的方法有存款、取款、查询余额和”显示帐号”,。定义主类,创建帐户类的对象,并完成相应操作。2、补充下列程序,完成数组类(放对象)的操作:该数组类功能包括:添加(添加不限制多少项)、修改、插入、删除、查询二、实验内容1、packagezuoye;publicclassbankaccount{privateintid;privatedoubleleftmoney;publicbankaccount(inti,doublej){this.id=i;this.leftmoney=j;}publicvoidsetleftmoney(doubleleftmoney){this.leftmoney=leftmoney;}publicdoublegetleftmoney(){returnleftmoney;}publicvoidsavemoney(doublemoney){leftmoney+=money;}publicvoidgetmoney(doublemoney){if(money=leftmoney)leftmoney-=money;elseSystem.out.println(只能取:+leftmoney);}publicstaticvoidmain(String[]args){bankaccountba=newbankaccount(888123,1000);ba.savemoney(21000);System.out.println(“账号为”+id+存入21000元后余额为:+ba.getleftmoney());ba.getmoney(11500);System.out.println(11500元后余额为:+ba.getleftmoney());}}2、packagezuoye;publicclassMyArray{privateObject[]ob=newObject[10];publicvoidadd(Objecto){for(intj=0;j10;j++){if(ob[j]==null){ob[j]=o;}}};publicintindexOf(Objecto){for(inti=0;i10;i++){if(ob[i]==o){returni;}}return-1;//不能返回0不然将返回线性表的第一个元素}publicvoidset(intindex,Objecto){ob[index]=o;};publicvoidinsert(intindex,Objecto){if(indexob.length||index0){System.err.println(数组下标越界!);}intl=ob.length;Object[]ob=newObject[l+1];ob[index]=o;for(inti=index+1;iob.length;i++){ob[i]=ob[i+1];}};publicvoidremove(intindex){for(inti=index;iob.length;i++){ob[i]=ob[i+1];}ob[ob.length]=null;};publicvoidremove(Objecto){inti=indexOf(o);//被删除的元素后的数据前移一个单位for(intj=i;job.length-1;j++){ob[j]=ob[j+1];}//原来数组的最后一个元素要nullob[ob.length-1]=null;};publicObjectget(intindex){returnob[index];}//测试类,用于测试数组类定义的方法publicstaticvoidmain(String[]args){MyArrayma=newMyArray();ma.add(aaa);ma.add(bbb);ma.add(ccc);Objecto=ma.get(1);}}实验五一、思考题1.使用JavaAplication的命令行参数读入两个数据,计算它们的和,然后将和输出。编程自定义例外OnlyOneException与NoOprandException。如果参数的数目不足,显示相应提示信息并退出程序的执行。二、实验内容packagezuoye;importjava.util.Scanner;classNoOprandExceptionextendsException{//自定义异常继承exception并重写构造函数publicNoOprandException(){System.out.println(没有输入参数!);}}classOnlyOneExceptionextendsException{publicOnlyOneException(){System.out.println(只输入了一个参数!);}}publicclassMyException{publicstaticvoidmain(Stringargs[])throwsNoOprandException,OnlyOneException{doublex,y;Scannersc=newScanner(System.in);System.out.print(请输入两个数字);Stringa=sc.nextLine();if(a.equals()){thrownewNoOprandException();}Stringb[]=a.split();//用空格隔开两个数据if(b.length==1){thrownewOnlyOneException();}else{x=Double.parseDouble(b[0]);y=Double.parseDouble(b[1]);dou
本文标题:java实验报告
链接地址:https://www.777doc.com/doc-1847458 .html