已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java语言程序设计实验报告实验序号:3实验项目名称:熟练Java语法学号姓名专业、班实验地点文波指导教师韩志龙时间2013/4/11一、实验目的及要求1、 进一步熟练Java语法和常用方法的使用;2、 进一步熟练Java程序结构;3、 进一步提高算法设计与实现的能力;4、 为后续章节的学习打下坚实的基础;二、实验设备(环境)Windows XP操作系统,MyEclipse 8.5编程软件三、实验内容与步骤1、 随机生成100个0到200的整数(包括0和200),用折半查找法(二分法)查找50是第几个数, 并输出查找过程(即和什么数进行了比较)。(输出排序之前的序号)(折半查找是在已经排序的数据中做的查找,所以先要排序。有可能找不到50,有可能找到多个50,这些情况都要考虑)2、 写一个斗地主的发牌程序(黑桃、红心、梅花和方块的对应Unicode值为u2660u2665u2663u2666,先生成一副按顺序排放的54张牌,放入字符串中,然后用随机方法取, 取一张删一张)3、 显示任意一个月份的日历(年份1900)(一周一行,要有月名、表头和横线。 按列右对齐, 用String.format(%1$ 4d,intNumber)可以将任意整数intNumber格式化成前面补“空格”的4位定长字符串)4、 显示出任一年份的日历(年份1900)5、 用数组模拟实现一个50个字符串的堆栈,并使这个堆栈有如下方法和参数:myStack:数组名,使用时不能直接对这个数组进行存取操作,存取操作都通过pop()和push()等方法完成。实现pop(): 弹出实现push():压入实现isFull():是否已满实现isEmpty():是否为空实现length():已有多少元素要点:要将代码设计成有通用性,也就是说要考虑各种可能的情况,考虑越多,你的程序就越稳定可靠,高可靠性的代码一直是一个开发人员追求的最高目标之一。6、 使用堆栈,将中缀算术表达式转换成后缀表达式。A、 表达式中只有(加)、(减)、,/,(,)六种运算符B、 变量名为以英文字母开头的字母数字串C、 表达式中可以出现不带符号的常数D、 适当判断表达式中的语法错误E、 不计算结果开始扫描;数字时,加入后缀表达式;运算符:a. 若为 (,入栈;b. 若为 ),则依次把栈中的的运算符加入后缀表达式中,直到出现(,从栈中删除( ;c. 若为 除括号外的其他运算符, 当其优先级高于栈顶运算符时,直接入栈。否则从栈顶开始,依次弹出比当前处理的运算符优先级高和优先级相等的运算符,直到一个比它优先级低的或者遇到了一个左括号为止。当扫描的中缀表达式结束时,栈中的的所有运算符出栈;四、实验结果与数据处理源代码:import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class fff public static void main(String args) System.out.println(n第一题的结果为:);Inorder();System.out.println(nnn第二题的结果为:); PlayCard();System.out.println(nnn第三题的结果为:);int year = new int 0 ;int month = new int 0 ;System.out.println(请分别输入你所要查询的年份(1900)及月份(112);getIntegerInput(year);getIntegerInput(month);Calendar(year0, month0);System.out.println(nnn第四题的结果: );PrintCalendars();System.out.println(nnn第五,六题的结果);String myString3=new String;System.out.println(必须以英文输入法输入合法的中缀表达式!);if(getStringInput(myString3)toSuffix(myString30); static void Inorder() int myInt=new int100;int i=0;System.out.println(-开始时的随机数顺序-);for( i=0;i100;i+) myInti=(int)(Math.random()*200); /产生100个0-200之间的数for(i=0;i100;i+)if(i+1)%10=0)System.out.println(String.format(%1$ 6d, myInti);elseSystem.out.print(String.format(%1$ 6d, myInti);int temp=0;for(i=0;i99;i+)for(int j=i+1;jmyIntj)temp = myIntj;myIntj = myInti;myInti = temp; System.out.println(nn-排序后的随机数顺序-); for(i=0;i100;i+)if(i+1)%10=0)System.out.println(String.format(%1$ 6d, myInti);elseSystem.out.print(String.format(%1$ 6d, myInti); System.out.println(); int small=0,big=99; boolean flag=false; int t=1; while(small50) System.out.println(因此,第+t+次 50比位于第+(mid+1)+号的数+myIntmid+小,所以向其左移动); big=mid-1; else if(myIntmid50) System.out.println(因此,第+t+次 50比位于第+(mid+1)+号的数+myIntmid+大,所以向其右移动); small=mid+1; else System.out.println(因此,第+t+次 找到50且是位于第+(mid+1)+号的数); flag=true; break; t+; if(flag=false) System.out.print(因此,此序列中无50这个数); public static void PlayCard() int i;int card = new int54;for (i = 0; i 54; i+) cardi = (int) (54 * Math.random();for (int j = 0; j i; j+)/* 避免重复 */if (cardi = cardj)i-;continue;System.out.println(随机生成的54个数为:);for (i = 0; i 54; i+) if (i + 1) % 9 = 0) System.out.println(String.format(%1$ 8d, cardi); elseSystem.out.print(String.format(%1$ 8d, cardi);System.out.println();System.out.print(player1:);for (i = 0; i 17; i+) System.out.print( + toCard(cardi);System.out.println();System.out.print(player2:);for (i = 17; i 34; i+) System.out.print( + toCard(cardi);System.out.println();System.out.print(player3:);for (i = 34; i 51; i+) System.out.print( + toCard(cardi);System.out.println();System.out.print(n底牌:);for (i = 51; i 54; i+) System.out.print( + toCard(cardi);System.out.println();private static String toCard(int m) if (m = 53)return K1;if (m = 52)return K2;String size = ;switch (m / 13) case 0:size = 黑桃;break;case 1:size = 红心;break;case 2:size = 梅花;break;case 3:size = 方块;break;String number = ;switch (m % 13) case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:number = + (m % 13 + 1);break;case 10:number = J;break;case 11:number = Q;break;case 12:number = K;break;return size + number;public static void Calendar(int year, int month) int firstDay1900 = 1;long num = GetYTotalNumDays(year, month);int firstDay = (int) (num + firstDay1900) % 7;System.out.println( + getMounthName(month) + - + year+ );System.out.println(-);System.out.println( Sun Mon Tue Wed Thu Fri Sat);for (int i = 1; i = 5 * firstDay; i+) / 在该月的1号之前添加空格System.out.print( );for (int j = 1; j = GetMNumDays(year, month); j+) / 输出该月的信息if (firstDay + j) % 7 != 0)System.out.print(String.format(%1$ 5d, j);elseSystem.out.println(String.format(%1$ 5d, j);static String getMounthName(int month) / 将星期从数值转化为对应的字符串String monthName = null;switch (month) case 1:monthName = January;break;case 2:monthName = February;break;case 3:monthName = March;break;case 4:monthName = April;break;case 5:monthName = May;break;case 6:monthName = June;break;case 7:monthName = July;break;case 8:monthName = August;break;case 9:monthName = September;break;case 10:monthName = October;break;case 11:monthName = November;break;case 12:monthName = December;break;return monthName;static long GetYTotalNumDays(int year, int month) / 距离1900年1月1日的天数long total = 0;for (int i = 1900; i year; i+) if (!isLeapYear(i)total = total + 365;elsetotal = total + 366;for (int i = 1; i 1900);getIntegerInput(year);for (int i = 1; i = 12; i+) Calendar(year0, i);System.out.println();private static boolean isEmpty(char stack) if (stack0 = u0000)return true;return false;private static boolean isFull(char stack) if (stack49 != u0000)return true;return false;private static int length(char stack) int counter = 0;while (stackcounter != u0000)counter+;return counter;private static char getTop(char stack) if (isEmpty(stack)return u0000;return stacklength(stack) - 1;private static boolean pop(char stack) if (isEmpty(stack)return false;stacklength(stack) - 1 = u0000;return true;private static boolean push(char stack, char newElement) if (isFull(stack)return false;stacklength(stack) = newElement;return true;/中缀转后缀private static void toSuffix(String s)char myStack = new 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);break; 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(myStack) = + | getTop(myStack) = -) push(myStack, s.charAt(i);break; else System.out.print(getTop(myStack);pop(myStack); elseSystem.out.print(s.charAt(i);while (!isEmpty(myStack) System.out.print(getTop(myStack);pop(myStack);static boolean getIntegerInput(int intInput) String strInput = null;boolean isInputMistake = false;try System.out.print(请输入一个整型数: );BufferedReader br = new BufferedReader(new InputStreamReader(System.in);strInput = br.readLine();intInput0 = Integer.parseInt(strInput); catch (IOException e) isInputMistake = true;System.out.println(IO错误!请重新运行程序。); catch (NumberFormatException e) isInputMistake = true;System.out.println(你的输入可能有格式错误!请重新运行程序。);return !isInputMistake;/ 从键盘获得一个double数static boolean getDoubleInput(double dblInput) String strInput = ;boolean isInputMistake = false;try System.out.print(请输入一个浮点数: );BufferedReader br = new BufferedReader(new InputStreamReader(System.in);strInput = br.readLine();dblInput0 = Double.parseDouble(strInput); catch (IOException e) isInputMistake = true;System.out.println(IO错误!请重新运行程序。); catch (NumberFormatEx
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 皮蛋的制作方法
- 2025版胰腺癌消瘦腹胀症状解析及护理指导
- 脑出血常见症状解析及护理建议
- 2025版梅毒常见症状及护理技巧
- 古生物地质学科普
- 生命体征评估护理
- 人物交互式介绍
- 2025全国青少年信息素养大赛Python编程初赛真题及答案解析
- 司法考试司法制度历年模拟题及答案
- 《养花》阅读训练
- 工艺报警分级管理制度
- 电梯免保协议书
- XX包装纸业有限公司安全风险评估报告范文
- 金矿投资合作协议书
- 老旧小区基础设施环境改造工程施工组织设计
- 麻醉恢复室进出流程及标准课件
- 2025-2030中国魔芋膳食纤维行业市场现状供需分析及投资评估规划分析研究报告
- 《呼吸道梗阻的急救处理》课件
- 择校入学合同协议
- 配电柜接线外包合同协议
- 氟斑牙防治试题及答案
评论
0/150
提交评论