Java实验报告Word格式文档下载.docx
- 文档编号:3643160
- 上传时间:2023-05-02
- 格式:DOCX
- 页数:10
- 大小:50.23KB
Java实验报告Word格式文档下载.docx
《Java实验报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《Java实验报告Word格式文档下载.docx(10页珍藏版)》请在冰点文库上搜索。
二、实验设备(环境)
实验室计算机、windowsGp系统、myeclipse
三、实验内容与步骤
1•随机生成100个0到200的整数,用折半查找法(二分法)查找50是第几个数,并输出查找过程(即和什么数进行了比较)。
(折半查找是在已经排序的数据中做的查找,所以先要排序)
2.显示任意一个月份的日历(>1900)(一周一行,要有月名、表头和横线。
按
列右对齐,用String.format("
%1$4d"
intNumber)可以将任意整数intNumber
格式化成前面补“空格”的4位定长字符串)
3.显示出任一年份的日历(>1900)
4.用数组模拟实现一个50个字符串的堆栈,并使这个堆栈有如下方法和参数:
myStack:
数组名,使用时不能直接对这个数组进行存取操作,存取操作都通过pop()和push()完成。
实现pop():
弹出
实现push():
压入
实现isFull():
是否已满
实现isEmpty():
是否为空
实现length():
已有多少元素
要点:
要将代码设计成有通用性,也就是说要考虑各种可能的情况,考
虑越多,你的程序就越稳定可靠,高可靠性的代码一直是一个开发人员追求的最高目标之一。
5.使用堆栈,将中缀算术表达式转换成后缀表达式。
a)表达式中只有+、一、x,/,%,(,)六种运算符
b)变量名为以英文字母开头的字母数字串
c)表达式中可以出现不带符号的常数
d)适当判断表达式中的语法错误
e)不计算结果
f)参考:
(算法描述)
1.若遇到的是数字或小数点,则直接写入到strResult中(strResult为结果
字符串);
2.若遇到的是左括号,则应把它压入到运算符栈中;
3.若遇到的是右括号,把从栈顶直到保存着的对应左括号之间的运算符依次
退栈并写入strResult串中;
4.若遇到的是运算符:
4.1当该运算符的优先级大于栈顶运算符的优先级时,进栈
4.2若遇到的运算符的优先级小于或等于栈顶运算符的优先级,这表明
栈顶运算符的两个运算对象已经被保存到strResult串中,应将栈顶运算符退栈并写入到strResult串中,对于新的栈顶运算符仍继续进行比较和处理,直到被处理的运算符的优先级大于栈顶运算符的优先级为止,然后让该运算符进栈即可。
四、实验结果与数据处理
程序代码:
importjava.io.BufferedReader;
importjava.io.IOEGception;
importjava.io.InputStreamReader;
publicclasseGperiment_3{
staticintintInputValue;
staticStringstrInputValue;
staticintlength;
publicstaticvoidmain(Stringargs[])
{
random();
//第1题随机数排序查找的功能
calendar();
//第二题日历的功能
String[]myString=newString[]{"
"
};
System.out.print("
请输入合法的中缀表达式:
);
if(getStringInput(myString))
MidfiGToSuffiG(myString[0]);
}
staticvoidrandom()
int[][]anArray;
anArray=newint[100][2];
//二维数组,存取随机数和其固定编号for(inti=0;
i<
100;
i++)
anArray[i][0]=(int)(Math.random()G200)+1;
//产生100个在
1-200之间的随机数
anArray[i][1]=i+1;
System.out.println("
随机产生的数为:
"
for(inti=0;
i++)//打印排序前的随机数{
System.out.print(String.format("
%1$5d"
anArray[i][0]));
if((i+1)%20==0)
System.out.println();
BobbleSort(anArray);
//调用排序函数对随机数进行排序
排序后的数为:
intnum=BinarySearch(anArray,50,anArray.length);
//返回查找到的数的下标,没有则为-1
if(num<
0)
NOFOUND!
//输出查找失败信息else
50是排序前的第"
//输出该数为第几个数intm=num;
for(inti=num;
i>
0;
i--)
if(anArray[i][0]==50)
System.out.print(anArray[i][1]+"
//输出该数为第几
个数
for(inti=m+1;
个数"
//输出该数为第几个数
staticintBinarySearch(int[][]arr,intsearchkey,intn)//二分查找算法
intlow=0;
inthigh=n-1;
和50比较过的数依次为:
while(low<
=high)
intmid=(low+high)/2;
+arr[mid][0]);
//每一次都是下标为mid的数和50比较
if(searchkey==arr[mid][0])
returnmid;
//如果找到,返回其编号
else
if(searchkey>
arr[mid][0])low=mid+1;
high=mid-1;
return-1;
staticvoidBobbleSort(int[][]arr)//冒泡法排序
inti,j,change;
change=1;
j=arr.length-1;
while(j>
0&
&
change==1)
change=0;
for(i=0;
j;
if(arr[i][0]>
arr[i+1][0])//将随机数和其编号同时交换
inttemp1=arr[i][0];
inttemp2=arr[i][1];
arr[i][0]=arr[i+1][0];
arr[i][1]=arr[i+1][1];
arr[i+1][0]=temp1;
arr[i+1][1]=temp2;
j--;
staticvoidcalendar()
intyear1=0;
年份"
))
intmonth1=0;
if(getIntegerInput("
请输入要查询日历的年月"
+"
\r"
year1=intInputValue;
月份"
month1=intInputValue;
Output(year1,month1);
//对特定的year1和month1的日历输出
intyear2=0;
请输入要查询的全年日历的年份"
year2=intInputValue;
for(inti=1;
=12;
Output(year2,i);
//调用同一个函数,进20XX年的12个月的日历输出
日一二三四五六"
intweek=Week(totalDays);
//表示当前月的第一天的星期intday=Day(year,month);
//当前月的天数for(inti=0;
week%7;
//打印1号前的空格
=day;
i));
if((i+week)%7==0)//依次打印出一个月的日期
staticintWeek(intdays)//计算某一天的星期
intweek[]={1,2,3,4,5,6,7};
//intday_1991_1_1=week[1];
//经查找,1901年1月1日是星期二
inttheweek=week[(days+1)%7];
returntheweek;
staticintDay(intyear,intmonth)//用来确定任意一年任意一月的天数
intnumDays=0;
switch(month)
case1:
case3:
case5:
case7:
case8:
case10:
case12:
numDays=31;
//大月的情况
break;
case4:
case6:
case9:
case11:
numDays=30;
//小月的情况
case2:
//闰年的情况
if(((year%4==0)&
!
(year%100==0))||(year%400==0))numDays=29;
numDays=28;
returnnumDays;
staticbooleanisEmpty(char[]stack)//判断栈是否为空
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 实验 报告