南昌大学Java实验报告.docx
- 文档编号:28695933
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:28
- 大小:595.54KB
南昌大学Java实验报告.docx
《南昌大学Java实验报告.docx》由会员分享,可在线阅读,更多相关《南昌大学Java实验报告.docx(28页珍藏版)》请在冰豆网上搜索。
南昌大学Java实验报告
南昌大学实验报告
学生姓名:
学号:
专业班级:
实训类型:
□验证□综合□设计□创新实验日期:
2017.11.1实验成绩:
一、实验项目名称
Java开发环境搭建和Java语言基础
二、实验的评分标准
实验分为A~F,A为最高,F最低。
F:
在规定时间内没有完成所有的实验,而且没有及时提交实验报告,或者实验过程中出现了抄袭复制他人实验代码。
D:
能完成实验,但是实验结果出现严重错误,不能体现对教学内容的理解。
C:
能基本完成实验,实验结果基本正确。
但是实验内容有较少的错误,提交的实验代码质量一般。
B:
能较好的完成实验,实验报告条理清楚,实验代码结构清晰,代码质量较高,及时更正试验中出现的错误,并对运行中一些异常错误进行分析,解释错误产生的原因。
A:
能较好的完成实验,实验代码质量高,实验报告完成度高,能在实验完成的基础上,根据个人的理解增加实验的新功能,具有一定的创新能力。
三、实验目的和要求
1.掌握Java的基础知识
2.掌握和运用Java的控制语句和数组
3.使用Eclipse平台开发Java应用
四、实验内容
1.HelloWorld的应用程序和Applet程序。
A.javap工具解析HelloWord字节码的类
B.javap反汇编HelloWorld字节码
C.修改代码,使之成为应用程序和Applet小程序
两种程序的“入口”不同,一个是main()函数,一个是init()函数,所以直接添加代码即可,运行时,根据IDE的run功能,选择相应的程序执行即可。
第一个和最后一个分别是Applet程序和Application程序
D.写文档注释,生成文件
一些效果截图
2.打印日历程序
(长图)部分截图
3.枚举类统计Java成绩
非法输入程序会报错退出
正确结果
自学了一下javafx,写了个简陋的UI。
(要配合控制台输入数据,有待改进)
4.四连子游戏
继续自学了一下javafx,给这个游戏包装了一个UI。
本题和老师理解的要求可能有出入,游戏规则有点差别,但是底层逻辑是差不多的,于是我还是按照自己的想法写了下去,希望老师理解。
某一列下满,按钮失效
获胜,信息提示
绿色指示当前局该哪一方落子
平局
Restart:
清盘重玩
Quit:
退出
实验源代码如下:
-------1.helloworld---------------
packageone;
importjava.applet.Applet;
importjava.awt.*;
/**
*Thisclassisusedtoshowhelloworldinformation
*intwokindsofways
*
*1.printtheinformationintheconsole
*2.generateanapplettodisplaytheinfo
*
*@authorYuchenTian
*/
publicclassHelloWorldextendsApplet{
/**
*mainfunctionforApplication
*@paramargs
*/
publicstaticvoidmain(String[]args){//forapplication
System.out.println("HelloWorld!
");
}
publicvoidinit(){}//forapplet
/**
*createangraphonapplettoshowinfo
*@paramg
*/
publicvoidpaint(Graphicsg){
g.drawString("HelloWorld!
",20,20);
}
}
------2.printCalendar----
---------Part1---------------
packagetwo;
/*
thisMonthenumdefinesthe12monthsofallyear
includingtheinformationof:
index:
theorderincurrentclass
name:
thefullnameofthemonth
day:
daysinthismonth
*/
publicenumMonth{
JAN(1,"January",30),FEB(2,"February",28),MAR(3,"March",31),APR(4,"April",30),
MAY(5,"May",31),JUN(6,"June",30),JUL(7,"July",31),AUG(8,"August",31),
SEP(9,"September",30),OCT(10,"October",31),NOV(11,"November",30),DEC(12,"December",31);
privateintindex;
privateStringname;
privateintday;
Month(intindex,Stringname,intday){
this.index=index;
this.name=name;
this.day=day;
}
publicStringgetName(){
returnname;
}
publicintgetDay(){
returnday;
}
//whenamonthcallthismethod,itbecomesthemonthfollowingit
publicMonthnext(){
intindex=(this.index+1>12)?
1:
this.index+1;
returngetMonthByIndex(index);
}
//getamonthaccordingtotheit'sindexintheenum
publicMonthgetMonthByIndex(intindex){
for(Monthc:
Month.values()){
if(c.index==index)
returnc;
}
returnnull;
}
}
-------part2-------
packagetwo;
importjava.util.Calendar;
importjava.util.GregorianCalendar;
publicclassMyCalendar{
privateintyear;
privateintstartDay;
privateMonthm;
publicMyCalendar(intyear){
this.year=year;
this.startDay=getFirstDay(0,1)%7;//month1,day1
m=Month.JAN;//startmonthoftheyear
}
publicintgetFirstDay(intmonth,intday){
GregorianCalendartool=newGregorianCalendar(this.year,month,day);
returntool.get(Calendar.DAY_OF_WEEK);//0forSun,1forMon...
}
publicvoidprintMonth(Monthm){
//generatetheheadinformationofeachmonth
System.out.printf("%20s\n",m.getName());
System.out.println("--------------------");
System.out.println("SuMoTuWeThFrSt");
intcount=0;
for(inti=0;i System.out.printf("%3c",''); count++; } for(inti=1;i<=getDays(m);++i){//printdays System.out.printf("%2d",i); count++; if(count%7==0) System.out.println(); } System.out.println(); startDay=(getDays(m)+startDay)%7;//changethestartDayforthenextmonth } publicbooleanisLeapYear(){ returnyear%400==0||(year%4==0&&year%100! =0); } //getdaysinspecificmonth //daysinFebruaryisuniquewhenitisleapyear //hence,aspecialapproachisimplementtoalteritright publicintgetDays(Monthm){ intdays=m.getDay(); if(isLeapYear()&&m.getName().equals(Month.FEB.getName()))//specialforFebruary days+=1; returndays; } //onceprintedthefirstmonth //changethemtothenextmonth publicvoidprintAllMonth(){ for(inti=0;i<12;++i){ printMonth(m); m=m.next(); } } } ---------part3---------- packagetwo; importjava.util.Scanner; publicclassPrintCalendar{ publicstaticvoidmain(String[]args){ //Prompttheusertoinputayear Scannerinput=newScanner(System.in); System.out.print("Pleaseinputayear: "); intyear=input.nextInt(); //createaMyCalendarinstance MyCalendarcal=newMyCalendar(year); cal.printAllMonth(); } } ----------3,aggregatethescores-------- --------part1-------- packagethree; publicenumGradeRank{ A("优秀",0),B("良好",1),C("中等",2),D("及格",3),E("不及格",4); privateStringinfo; privateintindex; GradeRank(Stringinfo,intindex){ this.info=info; this.index=index; } publicintgetIndex(){ returnindex; } publicStringgetInfo(){ returninfo; } publicGradeRankchangeRank(Doublegrade){ GradeRankg; if(grade>=90&&grade<=100) g=GradeRank.A; elseif(grade<90&&grade>=80) g=GradeRank.B; elseif(grade<80&&grade>=70) g=GradeRank.C; elseif(grade<70&&grade>=60) g=GradeRank.D; elseif(grade<60&&grade>=0) g=GradeRank.E; else g=null; returng; } } -------part2------- packagethree; importjava.util.Scanner; publicclassEvaluateGrade{ privateint[]collection; privateGradeRankg;//thestandardforAggregating privateintnum;//howmanyscoresyouneedtocalculate publicEvaluateGrade(intnum){ this.collection=newint[5];//ndifferentranks g=GradeRank.A; this.num=num; } //whenanewscoreisinput //gisgonnatochangeaccordingtothevalueofthescore publicvoidcheckRank(Doublegrade){ g=g.changeRank(grade); if(g==null){ System.out.println("Invalidinput! "); System.exit (1); } collection[g.getIndex()]++; } publicvoidcountRank(){ Scannerinput=newScanner(System.in); System.out.println("Inputthescores: "); for(inti=0;i Doublegrade=input.nextDouble(); checkRank(grade); } } publicvoiddisplay(){ for(inti=0;i<5;i++) System.out.printf("%s%c%5.1f%c\n",indexToStr(i),': ',getPercent(i),'%'); } //acquiretheinformationusingindex //todisplaytheoutcomebetter publicStringindexToStr(inti){ for(GradeRankc: GradeRank.values()){ if(c.getIndex()==i) returnc.getInfo(); } returnnull; } publicdoublegetPercent(inti){ return((double)collection[i]/num)*100; } } --------part3-------- packagethree; importjava.util.Scanner; publicclassAggregate{ publicstaticvoidmain(String[]args){ Scannernumber=newScanner(System.in); System.out.print("Pleaseinputthenumberofscoresyouwanttodealwith: "); intn=number.nextInt(); EvaluateGradechecker=newEvaluateGrade(n); checker.countRank(); checker.display(); } } -----------4,chessgame-------- --------part1------ /* thisclassisdesignedtostoredatainplayinggames andmaketheruleoftheplayingaswell */ publicclassGame{ privateint[][]board; privateint[]full; privatebooleanisBlack; publicGame(){ this.board=newint[7][]; for(inti=0;i<7;i++) this.board[i]=newint[6]; this.isBlack=true;//blacksideisfirst full=newint[7]; for(inti=0;i<7;i++) full[i]=5; } publicbooleanisBlack(){ returnisBlack; } //changetotheothersidetoplay publicvoidinTurn(){ this.isBlack=! this.isBlack; } publicbooleanisFull(inti){ returnfull[i]==-1; } publicbooleanisAllFull(){ for(inti=0;i<7;++i) if(! isFull(i)) returnfalse; returntrue; } //themostimportantpart //checkwhetheronesidehaswonthegame publicbooleancheckWin(inti,intj){ if(line(i,j)||column(i,j)||leftR(i,j)||rightL(i,j)) returntrue; else returnfalse; } publicbooleanline(inti,intj){ intcx=0; for(intm=i+1;m<7&&board[m][j]==board[i][j];++m) cx++; for(intm=i-1;m>=0&&board[m][j]==board[i][j];--m) cx++; if(cx>=3) returntrue; else returnfalse; } publicbooleancolumn(inti,intj){ intcx=0; for(intn=j+1;n<6&&board[i][n]==board[i][j];++n) cx++; for(intn=j-1;n>=0&&board[i][n]==board[i][j];--n) cx++; if(cx>=3) returntrue; else returnfalse; } publicbooleanleftR(inti,intj){ intcx=0; for(intm=i+1,n=j+1;m<7&&n<6&&board[m][n]==board[i][j];++m,++n) cx++; for(intm=i-1,n=j-1;m>=0&&n>=0&&board[m][n]==board[i][j];--m,--n) cx++; if(cx>=3) returntrue; else returnfalse; } publicbooleanrightL(inti,intj){ intcx=0; for(intm=i-1,n=j+1;m>=0&&n<6&&board[m][n]==board[i][j];--m,++n) cx++; for(intm=i+1,n=j-1;m<7&&n>=0&&board[m][n]==board[i][j];++m,--n) cx++; if(cx>=3) returntrue; else returnfalse; } //changethedataofgamewhenonesidedropthechess publicintdropChess(inti){ board[i][full[i]]=(isBlack())? 1: 2; inTurn(); full[i]--; returnfull[i]+1; } } -----part2------ importjavafx.geometry.Insets; importjavafx.scene.control.Button; importjavafx.scene.control.TextField; importjavafx.scene.layout.BorderPane; importjavafx.scene.layout.GridPane; importjavafx.scene.paint.Color; importjavafx.scene.shape.*; importjavafx.scene.text.*; /* thisclassisdesignedtoappendgraphofeachelementintothegame determinedthelayoutoftheseelementsaswell moreimportantly,thechangeoftheelementsasthegame
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 南昌大学 Java 实验 报告