南昌大学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;iSystem.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;iDoublegrade=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