Java实验报告.doc
《Java实验报告.doc》由会员分享,可在线阅读,更多相关《Java实验报告.doc(15页珍藏版)》请在咨信网上搜索。
1、Java语言程序设计实验报告实验序号:3实验项目名称: 熟练java语法、常用方法、程序结构学号10090401xx姓名xx专业、班电子商务1002实验地点xx指导教师xx时间2012.4.26一、实验目的及要求1、 进一步熟练Java语法和常用方法的使用;2、 进一步熟练Java程序结构;3、 进一步提高算法设计与实现的能力;4、 为后续章节的学习打下坚实的基础;二、实验设备(环境)实验室计算机、windows xp系统、myeclipse三、 实验内容与步骤1.随机生成100个0到200的整数,用折半查找法(二分法)查找50是第几个数, 并输出查找过程(即和什么数进行了比较)。(折半查找是
2、在已经排序的数据中做的查找,所以先要排序)2.显示任意一个月份的日历(1900)(一周一行,要有月名、表头和横线。 按列右对齐, 用String.format(%1$ 4d,intNumber)可以将任意整数intNumber格式化成前面补“空格”的4位定长字符串)3.显示出任一年份的日历(1900)4.用数组模拟实现一个50个字符串的堆栈,并使这个堆栈有如下方法和参数:myStack:数组名,使用时不能直接对这个数组进行存取操作,存取操作都通过pop()和push()完成。实现pop(): 弹出实现push():压入实现isFull():是否已满实现isEmpty():是否为空实现lengt
3、h():已有多少元素要点:要将代码设计成有通用性,也就是说要考虑各种可能的情况,考虑越多,你的程序就越稳定可靠,高可靠性的代码一直是一个开发人员追求的最高目标之一。5.使用堆栈,将中缀算术表达式转换成后缀表达式。a) 表达式中只有、,/,(,)六种运算符b) 变量名为以英文字母开头的字母数字串c) 表达式中可以出现不带符号的常数d) 适当判断表达式中的语法错误e) 不计算结果f) 参考:(算法描述)1. 若遇到的是数字或小数点,则直接写入到strResult中 (strResult为结果字符串);2. 若遇到的是左括号,则应把它压入到运算符栈中;3. 若遇到的是右括号,把从栈顶直到保存着的对应
4、左括号之间的运算符依次退栈并写入strResult串中;4. 若遇到的是运算符: 4.1 当该运算符的优先级大于栈顶运算符的优先级时,进栈 4.2 若遇到的运算符的优先级小于或等于栈顶运算符的优先级,这表明栈顶运算符的两个运算对象已经被保存到strResult串中,应将栈顶运算符退栈并写入到strResult串中,对于新的栈顶运算符仍继续进行比较和处理,直到被处理的运算符的优先级大于栈顶运算符的优先级为止,然后让该运算符进栈即可。四、实验结果与数据处理程序代码:import java.io.BufferedReader;import java.io.IOException;import jav
5、a.io.InputStreamReader;public class experiment_3static int intInputValue;static String strInputValue;static int length;public static void main(String args)random();/第1题随机数排序查找的功能calendar();/第二题日历的功能String myString=new String;System.out.print(请输入合法的中缀表达式:);if(getStringInput(myString)MidfixToSuffix(my
6、String0);static void random() int anArray;anArray=new int1002;/二维数组,存取随机数和其固定编号for(int i=0;i100;i+)anArrayi0=(int)(Math.random()*200)+1;/产生100个在1-200之间的随机数anArrayi1=i+1;System.out.println(随机产生的数为:);for(int i=0;i100;i+)/打印排序前的随机数System.out.print(String.format(%1$ 5d,anArrayi0);if(i+1)%20=0)System.out
7、.println();BobbleSort(anArray);/调用排序函数对随机数进行排序System.out.println(排序后的数为:);for(int i=0;i100;i+)System.out.print(String.format(%1$ 5d,anArrayi0);if(i+1)%20=0)System.out.println();int num=BinarySearch(anArray,50,anArray.length);/返回查找到的数的下标,没有则为-1System.out.println();if(num0;i-)if(anArrayi0=50)System.ou
8、t.print(anArrayi1+ );/输出该数为第几个数for(int i=m+1;i100;i+)if(anArrayi0=50)System.out.print(anArrayi1+ );/输出该数为第几个数System.out.println(个数);/输出该数为第几个数static int BinarySearch(int arr,int searchkey,int n)/二分查找算法int low=0;int high=n-1;System.out.print(和50比较过的数依次为:);while(lowarrmid0)low=mid+1;elsehigh=mid-1;ret
9、urn -1;static void BobbleSort(int arr)/冒泡法排序int i,j,change;change=1;j=arr.length-1;while(j0&change=1)change=0;for(i=0;iarri+10)/将随机数和其编号同时交换 int temp1=arri0; int temp2=arri1; arri0=arri+10; arri1=arri+11; arri+10=temp1; arri+11=temp2; change=1; j-;static void calendar() int year1=0;int month1=0;if(g
10、etIntegerInput(请输入要查询日历的年月+r+年份)year1=intInputValue;if(getIntegerInput(月份)month1=intInputValue;Output(year1,month1);/对特定的year1和month1的日历输出int year2=0;if(getIntegerInput(请输入要查询的全年日历的年份)year2=intInputValue;for(int i=1;i=12;i+)Output(year2,i);/调用同一个函数,进2012年的12个月的日历输出static void Output(int year,int mon
11、th)/输出函数int totalDays=0;for(int y=1901;yyear;y+)for(int m=1;m=12;m+)totalDays+=Day(y,m);for(int m=1;mmonth;m+)totalDays+=Day(year,m);/在1991.1.1的基础上算当前日期是第几天System.out.println( +year+年+month+月);/打印表头和横线System.out.println(-);System.out.println( 日 一 二 三 四 五 六);int week=Week(totalDays);/表示当前月的第一天的星期int
12、day=Day(year,month);/当前月的天数for(int i=0;iweek%7;i+)System.out.print( );/打印1号前的空格for(int i=1;i=day;i+)System.out.print(String.format(%1$ 4d,i);if(i+week)%7=0) /依次打印出一个月的日期System.out.println();System.out.println(r);static int Week(int days)/计算某一天的星期int week=1,2,3,4,5,6,7;/int day_1991_1_1=week1;/经查找,19
13、01年1月1日是星期二int theweek=week(days+1)%7;return theweek;static int Day(int year,int month)/用来确定任意一年任意一月的天数int numDays=0;switch(month)case 1:case 3:case 5:case 7:case 8:case 10:case 12:numDays=31;/大月的情况break;case 4:case 6:case 9:case 11:numDays=30;/小月的情况break;case 2:/闰年的情况if(year%4=0)&!(year%100=0)|(yea
14、r%400=0)numDays=29;elsenumDays=28;break;return numDays;static boolean isEmpty(char stack)/判断栈是否为空if (length=0)return true;return false;static boolean isFull(char stack)/判断栈是否为满if (length=50)return true;return false;static int Length(char stack)/返回栈中元素个数return length;static char getTop(char stack) /返
15、回栈顶元素if (isEmpty(stack)return 0;elsereturn stackLength(stack) - 1;static void pop(char stack) /出栈if (isEmpty(stack)return ;length-;return ;static boolean push(char stack, char aChar)/入栈if (isFull(stack)return false;stacklength+ = aChar;return true;static void MidfixToSuffix(String s)char myStack=new
16、 char50; System.out.println(其后缀表达式为:);for (int i = 0; i s.length(); i+)if (s.charAt(i) = + | s.charAt(i) = - | s.charAt(i) = *| s.charAt(i) = /| s.charAt(i) = %| s.charAt(i) = ( | s.charAt(i) = ) /如果是运算符则进一步判断System.out.print( );while (true) if (s.charAt(i) = () /是左括号则直接进栈push(myStack,s.charAt(i);br
17、eak; else if (s.charAt(i) = ) /是右括号则栈中左括号上面的所有符号依次出栈while (getTop(myStack) != () System.out.print(getTop(myStack)+ );pop(myStack);pop(myStack);break; else if (isEmpty(myStack)|getTop(myStack) = () push(myStack, s.charAt(i);break; else if (s.charAt(i) = * | s.charAt(i) = / | s.charAt(i) = %)& (getTop
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 实验 报告
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【快乐****生活】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【快乐****生活】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。