ImageVerifierCode 换一换
格式:DOC , 页数:17 ,大小:487.50KB ,
资源ID:1611344      下载积分:15 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-1611344.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(计科1201_JavaExp3_鲁思成.doc)为本站会员(liyang3100)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

计科1201_JavaExp3_鲁思成.doc

1、Java 语言程序设计实验报告实验序号:三实验项目名称:熟悉 MyEclipse IDE、熟悉 Java 程序结构及简单语句学 号 1209050160 姓 名 鲁思成 专业、班 计科 1201实验地点 文波 217 指导教师 韩志龙 时间 2014-4-10一、实验目的及要求1、进一步熟练Java语法和常用方法的使用;2、进一步熟练Java程序结构;3、进一步提高算法设计与实现的能力;4、为后续章节的学习打下坚实的基础;二、实验设备(环境)Windows8 MyEclipse三、实验内容与步骤1、随机生成100个0到200的整数(包括0和200) ,用折半查找法(二分法)查找50是第几个数,

2、 并输出查找过程(即和什么数进行了比较) 。 (输出排序之前的序号)(折半查找是在已经排序的数据中做的查找,所以先要排序。有可能找不到50,有可能找到多个50,这些情况都要考虑)2、写一个斗地主的发牌程序(黑桃、红心、梅花和方块的对应Unicode值为u2660u2665u2663u2666,先生成一副按顺序排放的54张牌,放入字符串中,然后用随机方法取, 取一张删一张)3、显示任意一个月份的日历(年份1900) (一周一行,要有月名、表头和横线。按列右对齐, 用 String.format(“%1$ 4d“,intNumber)可以将任意整数intNumber 格式化成前面补“空格”的 4

3、位定长字符串)4、显示出任一年份的日历(年份1900)5、用数组模拟实现一个50个字符串的堆栈,并使这个堆栈有如下方法和参数:myStack:数组名,使用时不能直接对这个数组进行存取操作,存取操作都通过pop()和push()等方法完成。实现pop(): 弹出实现push():压入实现isFull():是否已满实现isEmpty():是否为空实现length():已有多少元素要点:要将代码设计成有通用性,也就是说要考虑各种可能的情况,考虑越多,你的程序就越稳定可靠,高可靠性的代码一直是一个开发人员追求的最高目标之一。6、使用堆栈,将中缀算术表达式转换成后缀表达式。A、表达式中只有(加)、(减)

4、、,/,(,)六种运算符B、变量名为以英文字母开头的字母数字串C、表达式中可以出现不带符号的常数D、适当判断表达式中的语法错误E、不计算结果7、迷宫找路径。开始扫描;数字时,加入后缀表达式;运算符:a. 若为 (,入栈;b. 若为 ),则依次把栈中的的运算符加入后缀表达式中,直到出现(,从栈中删除( ;c. 若为 除括号外的其他运算符 , 当其优先级高于栈顶运算符时,直接入栈。否则从栈顶开始,依次弹出比当前处理的运算符优先级高和优先级相等的运算符,直到一个比它优先级低的或者遇到了一个左括号为止。当扫描的中缀表达式结束时,栈中的的所有运算符出栈; 4、实验结果与数据处理实验代码如下:import

5、 java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.Scanner;public class ExperimentThreepublic static void main(String args)questionOne();questionTwo();questionThree();questionFour();questionSix();static void questionOne()/问题一Scanner scanner = new Sca

6、nner(System.in);/ 创 建一个Scanner对象用于获取键盘输入System.out.println(“请输入随机整数最大值 “);int max = scanner.nextInt();System.out.println(“请输入随机整数个数“);int length = scanner.nextInt();int myArray=new intlength;/用于存放随机数int orderArray=new intlength;/用于存放随机数序号getArray(myArray,orderArray,max);/生成随机数System.out.println(“生成的

7、随机整数为:“);outPut(myArray);/输出随机数System.out.println(“排序后的随机整数为: “);order(myArray,orderArray);/给数组排序outPut(myArray);/输出排序后的数组System.out.println(“请输入查找的整数“);int searchKey= scanner.nextInt();if(0myArrayj)tmp=myArrayi;myArrayi=myArrayj;myArrayj=tmp;/给随机数排序tmp=orderArrayi;orderArrayi=orderArrayj;orderArray

8、j=tmp;/随机数位置跟随 变换static void locating(int myArray,int orderArray,int searchKey)/查找int low=0;int high=myArray.length-1;int mid=(low+high)/2;int time=1;boolean flag=false;/用于记录是否存在查找数while(lowsearchKey)System.out.println(“第“+time+“次,“ +searchKey+“比第“+(mid+1)+“个数“+myArraymid+“小,向左移动“ );high=mid-1;else

9、if(myArraymidsearchKey)System.out.println(“第“+time+“次,“ +searchKey+“比第“+(mid+1)+“个数“+myArraymid+“大,向右移动“ );low=mid+1;elseSystem.out.println(“第“+time+“次,找到“ +searchKey+“,在原随机数中序号为“+orderArraymid);flag=true;break;time+;if(flag=true)low=mid-1;high=mid+1;while(myArraylow-=searchKey)time+;System.out.prin

10、tln(“第“+time+“次,向左遍历,“ +searchKey+“在原随机数中序号为“+orderArraylow-1);while(myArrayhigh+=searchKey)time+;System.out.println(“第“+time+“次,向右遍历,“ +searchKey+“在原随机数中序号为“+orderArrayhigh+1);elseSystem.out.println(“随机整数中没有“+searchKey);static void getCards(String cardBuffer)/生成54张扑克牌for(int i=0;i13;i+)/分13组生成除了大小王

11、的52张牌switch(i+1)case 1:cardBuffer4*i=(“黑桃A“);cardBuffer4*i+1=(“红桃A“);cardBuffer4*i+2=(“梅花A“);cardBuffer4*i+3=(“方片A“);break;case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:case 10:cardBuffer4*i=(“黑桃“ +(i+1);cardBuffer4*i+1=(“红桃“+(i+1);cardBuffer4*i+2=(“梅花“+(i+1);cardBuffer4*i+3=(“方片“+(i+1);br

12、eak;case 11:cardBuffer4*i=(“黑桃J“);cardBuffer4*i+1=(“红桃J“);cardBuffer4*i+2=(“梅花J“);cardBuffer4*i+3=(“方片J“);break;case 12:cardBuffer4*i=(“黑桃Q“);cardBuffer4*i+1=(“红桃Q“);cardBuffer4*i+2=(“梅花Q“);cardBuffer4*i+3=(“方片Q“);break;case 13:cardBuffer4*i=(“黑桃K“);cardBuffer4*i+1=(“红桃K“);cardBuffer4*i+2=(“梅花K“);ca

13、rdBuffer4*i+3=(“方片K“);break;cardBuffer52=(“Big Joker“);cardBuffer53=(“Little Joker“);/生成大小王static void dealCards(String cardBuffer,String player)/发牌int random=0;for(int i=0;iplayer.length;i+)dorandom=(int)(Math.random()*54);while(cardBufferrandom=(“);playeri=cardBufferrandom;cardBufferrandom=(“);sta

14、tic void showCards(String cardBuffer)for(int i=0;icardBuffer.length;i+)System.out.print(cardBufferi+“t“);System.out.println();static int getYeardays(int year)/判断年份是闰年还是平年并返回对应年份的天数if(year%4=0)return 366;/闰年366天elsereturn 365;/平年365天static int getMonthdays(int year,int month)/给定年份、月份,获取当月天数int monthD

15、ays=0;switch(month)case 1: monthDays=31;break;case 2:if(year%4=0)monthDays=29;else monthDays=28;break;/2月闰年29 天,平年28天case 3: monthDays=31;break;case 4: monthDays=30;break;case 5: monthDays=31;break;case 6: monthDays=30;break;case 7: monthDays=31;break;case 8: monthDays=31;break;case 9: monthDays=30;

16、break;case 10:monthDays=31;break;case 11:monthDays=30;break;case 12:monthDays=31;break;return monthDays;static long getTotledays(int year,int month)/计算距离1900 年1月1日的天数long totleDays=0;for(int i=1900;iyear;i+)/从1900 年开始将每年的天数加起来,加到当前年份的前一年totleDays+=getYeardays(i);for(int i=1;imonth;i+)/从当前年份1月开始将每月的天

17、数加起来,加到当前月份的前一月totleDays+=getMonthdays(year,i);return totleDays;static void calendar(int year,int month)/打印出一个月份的日历int firstday=1;/要打印日历的第一天,1900年1月1日作比较基点是星期一,firstday初始值是星期一long totleDays=getTotledays(year,month);firstday=(int)(totleDays%7);/距离1900年1月1 日的天数对7取模,所得即为第一天的星期数System.out.println(“ “+ye

18、ar+“-“+month+“ “);System.out.println(“-“);System.out.println(“ Sun Mon Tue Wed Thu Fri Sat“);for(int i=0;ifirstday;i+)System.out.print(“ “);/在当月1号对应星期数之前的几天添加空格for(int i=1;i=getMonthdays(year,month);i+)/输出当月信息System.out.print(String.format(“%1$ 5d“,i);if(i+firstday)%7=0)System.out.println();static i

19、nt intInputValue;public static boolean getIntegerInput(String aPrompt) /若返回false,则输 入出错,输入的值不能用。若返回 true,输入正确,输入值可以用int anInteger=0;String strInput=null;trySystem.out.print(aPrompt+“: “);BufferedReader br=new BufferedReader(new InputStreamReader(System.in);strInput=br.readLine();anInteger=Integer.pa

20、rseInt(strInput);catch(IOException e)System.out.println(“IO错误!请重新运行程序。 “);return false;catch(NumberFormatException e)System.out.println(“你的输入可能有格式 错误!请重新运行程序。“);return false;intInputValue=anInteger;return true;static void expressionSwitch(String nifixExpression)String postfixExpression =“;/String型po

21、stfixExpression用来存放后缀表达式String myStack=new String50;/把myStack50 当做堆栈用char nifix=nifixExpression.toCharArray();/将中追表达式转换为字符数组型for(int i=0;inifix.length;i+)/依次判断中缀表达式的每一个字符switch(nifixi)case (:/ 若为 (,入栈;push(myStack,“(“);break;case ):/b. 若为 ),则依次把栈中的的运算符加入后缀表达式中,直到出现(,从栈中删除( ;String top=pop(myStack);w

22、hile(top!=“(“top=pop(myStack);break;/*若为 除括号外的其他运算符 ?, 当其优先级高于栈顶运算符时,直接入栈。*否则从栈顶 开始,依次弹出比当前处理的运算符优先级高和优先级相等的运算符,*直到一个比它 优先级低的或者遇到了一个左括号为止。*/case +:;case -:top=pop(myStack);while(top!=“(“top=pop(myStack);push(myStack,top);push(myStack,String.valueOf(nifixi);break;case *:case /:case %:top=pop(myStack)

23、;if(top!=“*“push(myStack,String.valueOf(nifixi);elsewhile(top!=“+“top=pop(myStack);push(myStack,top);push(myStack,String.valueOf(nifixi);break;default:/其他数字或 变量时,加入后缀 表达式;postfixExpression+=String.valueOf(nifixi);break;String top=null;/当扫描的中缀表达式结束时,栈中的所有运算符出栈top=pop(myStack);while(top!=null)postfixE

24、xpression+=top;top=pop(myStack);System.out.println(“转换为后缀表达式:“);System.out.println(postfixExpression);/输出后缀表达式/*堆栈出栈、入栈等方法*/static String pop(String stack)/ 弹出栈顶 元素,并返回栈顶元素String poper;int i=0;if(isEmpty(stack)/堆栈为空,返回值为null,出栈失败poper=null;elsewhile(stacki+!=null/堆栈不为空,将栈顶元素赋给poper ,返回poper=stacki-2

25、;stacki-2=null;return poper;static boolean push(String stack,String pusher)/元素入栈int i=0;if(isFull(stack)/堆栈已满,返回false,入栈失败return false;else if(pusher=null)return false;elsewhile(stacki+!=null/堆栈不为空,将栈顶元素pusher赋给栈顶,返回true,入栈成功stacki-1=pusher;return true;static boolean isFull(String stack)/堆栈是否已满if(st

26、ackstack.length-1=null)/stack的最后一个元素为空,则堆栈未满,返回falsereturn false;else return true;static boolean isEmpty(String stack)/堆栈是否为空if(stack0=null)/stack的第一个元素为空,则堆栈为空,返回truereturn true;elsereturn false;static int length(String stack)/堆栈已有多少元素int i=0;while(stacki+!=nullreturn i;/*键盘输入字符串方法*/public static S

27、tring getStringInput(String aPrompt)String str=“;trySystem.out.println(aPrompt+“: “);BufferedReader br=new BufferedReader(new InputStreamReader(System.in);str=br.readLine();catch(IOException e)System.out.println(“IO错误!请重新运行程序。 “);return null;return str;实验结果:五、分析与讨论(体会、感想、意见、建议)教师评语及成绩:签名:日期:说明:1、 同学们可以直接在这个格式文件中填写你们的实验过程及结果;2、 实验报告文件要统一命名格式:“电商 0802_JavaExp1_姓名” , “计科 0901_JavaExp1_姓名” , “电商 0902_JavaExp1_姓名” ,请注意,中间的分隔符是英文下划线。3、 如果不按此格式命名,将拒收实验报告,改正后再上交;4、 坚决杜绝抄袭,如果发现有抄袭者,实验报告为 0 分;(本课程最后成绩,实验占 40%,期末考试占 605、 按时完成报告,班干部收集,然后集中上交老师。请注意,一定不要直接交给老师,这样容易丢失。7、 “分析与讨论”部分通常会占 10%至 20%的分数。

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报