Java语言程序设计基础教程上机实验指导手册.docx
《Java语言程序设计基础教程上机实验指导手册.docx》由会员分享,可在线阅读,更多相关《Java语言程序设计基础教程上机实验指导手册.docx(52页珍藏版)》请在冰点文库上搜索。
Java语言程序设计基础教程上机实验指导手册
《Java语言程序设计基础教程》
上机实验指导手册
实验一Java环境演练
【目的】
①安装并配置Java运行开发环境;
②掌握开发Java应用程序的3个步骤:
编写源文件、编译源文件和运行应用程序;
掌握开发JavaApplet程序的3个步骤:
编写源文件、编译源文件和运行JavaApplet程序;
学习同时编译多个Java源文件。
【内容】
1.一个简单的应用程序
实验要求:
编写一个简单的Java应用程序,该程序在命令行窗口输出两行文字:
“你好,很高兴学习Java”和“Wearestudents”。
程序运行效果示例:
程序运行效果如下图所示:
程序模板:
publicclassHello
{
publicstaticvoidmain(Stringargs[])
{
【代码1】;
import.*;
publicclassFirstAppletextendsApplet
{
publicvoidpaint(Graphicsg)
{
;
1.【代码1】ava
【结果】
将本次上机实验结果按照以上内容依次填写实验目标、过程、结果。
【注意事项】
1实验报告要求每人提交一份,使用专门的报告纸,内容写全,包括实验名称、班级、姓名、同组人,试验日期、交报告日期等。
2报告不需要填写源代码,只要将完成情况和所有练习题结果写上就可以。
【思考题】
实验二Java基本数据类型与控制语句
【目的】
1掌握char型数据和int型数据之间的相互转换,同时了解unicode字符表;
2掌握使用if…elseif多分支语句;
3使用if…else分支和while循环语句解决问题。
【内容】
1.输出希腊字母表。
实验要求:
编写一个Java应用程序,该程序在命令行窗口输出希腊字母表。
程序运行效果示例:
程序运行效果如下图所示:
程序模板:
publicclassGreekAlphabet
{
publicstaticvoidmain(Stringargs[])
{
intstartPosition=0,endPosition=0;
charcStart='α',cEnd='ω';
【代码1】用“yourGuess>realNumber”替换【代码1】,可以么?
2.语句:
“猜对了!
”);”为何要放在while循环语句之后?
放在while语句的循环体中合理吗?
【结果】
将本次上机实验结果按照实验要求内容依次进行,填写实验目标、过程、结果。
【注意事项】
实验报告要求每人提交一份,使用专门的报告纸,内容写全,包括实验名称、班级、姓名、同组人,试验日期、交报告日期等。
报告不需要填写源代码,只要将完成情况和所有练习题结果写上就可以。
实验三类与对象、继承
【目的】
使用类来封装对象的属性和功能;
掌握类变量与实例变量,以及类方法与实例方法的区别;
掌握使用package和import语句。
巩固以下概念:
子类的继承性
子类对象的创建过程
成员变量的继承与隐藏
方法的继承与重写
【内容】
1.三角形、梯形和圆形的类封装
实验要求:
编写一个Java应用程序,该程序中有3个类:
Trangle、Leder和Circle,分别用来刻画“三角形”、“梯形”和“圆形”。
具体要求如下:
a)Trangle类具有类型为double的三个边,以及周长、面积属性,Trangle类具有返回周长、面积以及修改三个边的功能。
另外,Trangle类还具有一个boolean型的属性,该属性用来判断三个属能否构成一个三角形。
b)Lader类具有类型double的上底、下底、高、面积属性,具有返回面积的功能。
c)Circle类具有类型为double的半径、周长和面积属性,具有返回周长、面积的功能。
程序运行效果示例:
程序运行效果如下图所示:
程序模板:
classTrangle
{
doublesideA,sideB,sideC,area,length;
booleanboo;
publicTrangle(doublea,doubleb,doublec)
{
【代码1】程序中仅仅省略【代码15】,编译能通过吗?
2.程序中仅仅省略【代码16】,编译能通过吗?
3.程序中仅仅省略【代码15】,运行时出现怎样的异常提示?
1.给Trangle类增加3个方法,分别用来返回3个边:
sideA、sideB和sideC。
2.让AreaAndLength类中的circle对象调用方法修改半径,然后输出修改后的半径以及修改半径后的圆的面积和周长。
2.实例成员与类成员。
实验要求:
按程序模板的要求编写源文件,要特别注意程序的输出结果,并能正确解释输出的结果。
程序运行效果示例:
程序运行效果如下图所示:
程序模板:
classA
{
【代码1】将inputA()方法中的
改写为
编译是否出错?
为什么?
2.将inputB()方法中的
改写为
编译是否报错?
为什么?
3.使用package语句与import语句。
实验要求:
按实验要求使用package语句,并用import语句使用Java平台提供的包中的类以及自定义包中的类。
掌握一些重要的操作步骤。
程序运行效果示例:
程序运行效果如下图所示:
程序模板:
模板1:
将模板1给出的Java源文件命名为,将编译后得到的字节码文件复制到c:
\1000\tom\jiafei目录中。
package;
publicclassSquareEquation
{
doublea,b,c;
doubleroot1,root2;
booleanboo;
publicSquareEquation(doublea,doubleb,doublec)
{
=a;
=b;
=c;
if(a!
=0)
{
boo=true;
}
else
{
boo=false;
}
}
publicvoidgetRoots()
{
if(boo)
{
"是一元2次方程");
doubledisk=b*b-4*a*c;
if(disk>=0)
{
root1=(-b+(disk))/(2*a);
root2=(disk))/(2*a);
"方程的根:
%f,%f\n",root1,root2);
}
else
{
"方程没有实根\n");
}
}
else
{
"不是一元2次方程");
}
}
publicvoidsetCoefficient(doublea,doubleb,doublec)
{
=a;
=b;
=c;
if(a!
=0)
{
boo=true;
}
else
{
boo=false;
}
}
}
模板2:
将模板2给出的Java源程序保存到d:
\2000中。
在编译模板2给出的Java源文件之前,要重新设置classpath。
假设本地机SDK的安装目录是E:
\。
在命令行执行如下命令:
setclasspath=e:
\\jre\lib\;.;c:
\1000
然后编译模板2给出的Java源程序。
或用鼠标右键点击“我的电脑”,弹出快捷菜单,然后选择“属性”命令,弹出“系统属性”对话框,再单击该对话框中的“高级”选项卡,然后单击“环境变量”按钮。
将classpath的值修改为:
E:
\\jre\lib\;.;c:
\1000
然后重新打开一个命令行窗口,编译模板2给出的Java源程序。
import.*;
classSunRise
{
publicstaticvoidmain(Stringargs[])
{
SquareEquationequation=newSquareEquation(4,5,1);
();
(-3,4,5);
();
}
}
实验后的练习:
假设SDK的安装目录是E:
\,那么Java运行系统默认classpath的值是:
E:
\\jre\lib\;.;
其中的“”表示应用程序可以使用当前目录中的无名包类以及当前目录下的子目录中的类,子目录中的类必须有包名,而且包名要和子目录结构相对应。
因此,如果将模板2应用程序的字节码文件存放到d:
\5000中,并将的字节码文件存放在D:
\5000\tom\jiafei中,那么就不需要修改classpath。
要特别注意的是,因为有包名,切不可将以及它的字节码文件存放在d:
\5000中,即不可以和的字节码存放在一起,请进行如下的练习:
1.将存放在D:
\5000\tom\jiafei中,编译:
D:
\5000\tom\jiafei\javac
2.将存放到D:
\5000中,编译:
D:
\5000\javac
3.运行:
javaSunrise
【结果】
将本次上机实验结果按照实验要求内容依次进行,填写实验目标、过程、结果。
【注意事项】
实验报告要求每人提交一份,使用专门的报告纸,内容写全,包括实验名称、班级、姓名、同组人,试验日期、交报告日期等。
报告不需要填写源代码,只要将完成情况和所有练习题结果写上就可以。
实验四字符串、时间与数字类
【目的】
掌握String类的常用方法
掌握Date类以及Calendar类的常用方法;
掌握BigInteger类的常用方法。
【内容】
1.String类的常用方法。
实验要求:
编写一个Java应用程序,判断两个字符串是否相同,判断字符串的前缀、后缀是否和某个字符串相同,按字典顺序比较两个字符串的大小关系,检索字符串,创建字符串,将数字型字符串转换为数字,将字符串存放到数组中,用字符数组创建字符串。
。
程序运行效果示例:
程序运行效果如下图所示:
程序模板:
classStringExample
{publicstaticvoidmain(Stringargs[])
{Strings1=newString("youareastudent"),
s2=newString("howareyou");
if(【代码1】)220302”;
Stringtemp=(position+1);
"数字"+m+"有"+()+"位小数");
Strings9=newString("ABCDEF");
chara[]=【代码10】程序中的s6改写成
Strings6=newString(“1a12b”);
运行时提示怎样的错误?
2.请用数组a的前3个单元创建一个字符串并输出该串。
3.请给出获取path中“jsp”子字符串的代码。
4.在程序的适当位置增加如下代码,注意输出的结果。
Stringstr1=newString(“ABCABC”),
str2=null,
str3=null,
str4=null;
str2=(“A”,”First”);
str3=(“B”,”Second”);
str4=(“C”,”Third”);
可以使用Long类中的下列static方法得到整数各种进制的字符串表示:
PublicstaticStringtoBinaryString(longi)
PublicstaticStringtoOctalString(longi)
PublicstaticStringtoHexString(longi)
PublicstaticStringtoString(longi,intp)
其中的toString(longi,intp)返回整数i的p进制表示。
请在适当位置添加代码输出12345的二进制、八进制和十六进制表示。
6.在适当位置添加代码,分别输出数字m的整数部分和小数部分。
2.比较日期的大小。
实验要求:
编写一个Java应用程序,用户从输入对话框输入了两个日期,程序将判断两个日期的大小关系,以及两个日期之间的间隔天数。
程序运行效果示例:
程序运行效果如下图所示:
程序模板:
DateExample
import.*;
importclassDateExample
{
publicstaticvoidmain(Stringargs[])
{
Stringstr=("输入第一个日期的年份:
");
intyearOne=(str);
str=("输入该年的月份:
");
intmonthOne=(str);
str=("输入该月份的日期:
");
intdayOne=(str);
str=("输入第二个日期的年份:
");
intyearTwo=(str);
str=("输入该年的月份:
");
intmonthTwo=(str);
str=("输入该月份的日期:
");
intdayTwo=(str);
Calendarcalendar=【代码1】Calendar对象可以将时间设置到年、月、日、时、分、秒。
请改进上面的程序,使用户输入的两个日期包括时、分、秒。
2.根据本程序中的一些知识,编写一个计算利息(按天计算)的程序。
从输入对话框输入存款的数目和起止时间。
3.处理大整数。
实验要求:
编写一个Java应用程序,计算两个大整数的和、差、积和商,并计算一个大整数的因子个数(因子中不包括1和大整数本身)。
程序运行效果示例:
程序运行效果如下图所示:
程序模板:
BigintegerExample
import.*;
classBigIntegerExample
{
publicstaticvoidmain(Stringargs[])
{BigIntegern1=newBigInteger("654321"),
n2=newBigInteger("456789"),
result=null;
result=【代码1】编写程序,计算大整数的阶乘。
2.编写程序,计算1+2+3…的前9项的和。
【结果】
将本次上机实验结果按照实验要求内容依次进行,填写实验目标、过程、结果。
【注意事项】
实验报告要求每人提交一份,使用专门的报告纸,内容写全,包括实验名称、班级、姓名、同组人,试验日期、交报告日期等。
报告不需要填写源代码,只要将完成情况和所有练习题结果写上就可以。
实验五组件与事件处理
【目的】
学习处理ActionEvent事件;
学习处理ItemEvent事件和paint方法;
学习使用布局类。
【内容】
1.算术测试。
实验要求:
编写一个算书测试小软件,用来训练小学生的算术能力。
程序由3个类组成,其中Teacher类对象负责给出算术题目,并判断回答者的答案是否正确;ComputerFrame类对象负责为算术题目提供视图,比如用户可以通过ComputerFrame类对象提供的GUI界面看到题目,并通过该GUI界面给出题目的答案;MainClass是软件的主类。
程序运行效果示例:
程序运行效果如下图所示:
程序模板:
publicclassTeacher
{intnumberOne,numberTwo;
Stringoperator="";
booleanright;
publicintgiveNumberOne(intn)
{numberOne=(int)()*n)+1;
returnnumberOne;
}
publicintgiveNumberTwo(intn)
{numberTwo=(int)()*n)+1;
returnnumberTwo;
}
publicStringgiveOperator()
{doubled=();
if(d>=
operator="+";
else
operator="-";
returnoperator;
}
publicbooleangetRight(intanswer)
{if("+"))
{if(answer==numberOne+numberTwo)
right=true;
else
right=false;
}
elseif("-"))
{if(answer==numberOne-numberTwo)
right=true;
else
right=false;
}
returnright;
}
}
import.*;
importclassComputerFrameextendsFrameimplementsActionListener
{TextFieldtextOne,textTwo,textResult;
ButtongetProblem,giveAnwser;
LabeloperatorLabel,message;
Teacherteacher;
ComputerFrame(Strings)
{super(s);
teacher=newTeacher();
setLayout(newFlowLayout());
textOne=【代码1】给上述程序增加测试乘、除的功能。
2.信号灯。
实验要求:
编写一个带有窗口的应用程序。
在窗口的北面添加一个下拉列表,该下拉列表有“”、“”和“”三个选项。
在窗口的中心添加一个画布,当用户在下拉列表选择某项后,画布上绘制相应的信号灯。
程序运行效果示例:
程序运行效果如下图所示:
程序模板:
import.*;
publicclassSignalCanvasextendsCanvas
{intred,green,yellow,x,y,r;
SignalCanvas()
{setBackground;
}
publicvoidsetRed(intr)
{red=r;
}
publicvoidsetGreen(intg)
{green=g;
}
publicvoidsetYellow(inty)
{yellow=y;
}
publicvoidsetPosition(intx,inty)
{=x;
=y;
}
publicvoidsetRadius(intr)
{=r;
}
publicvoidpaint(Graphicsg)
{if(red==1)
{;
}
elseif(green==1)
{;
}
elseif(yellow==1)
{;
}
(x,y,2*r,2*r);
}
}
import.*;
import.*;
importclassSignalFrameextendsFrameimplementsItemListener
{Choicechoice;
SignalCanvassignal=null;
StringitemRed="红灯",itemYellow="黄灯",itemGreen="绿灯";
publicSignalFrame()
{choice=【代码1】idth;
inth=().height;
intm=(w,h);
(m/6);
if(itemRed))
{if(signal!
=null)
{
(1);
(0);
(0);
(w/3,0);
();
}
}
elseif(itemYellow))
{if(signal!
=null)
{(0);
(1);
(0);
(w/3,h/3);
();
}
}
elseif(itemGreen))
{if(signal!
=null)
{(0);
(0);
(1);
(w/3,2*h/3);
();
}
}
}
}
publicclassSignalMainClass
{publicstaticvoidmain(Stringargs[])
{SignalFrameframe;
frame=newSignalFrame();
("信号灯");
}
}
实验后的练习:
1.改进上述程序,在下拉列表中增加“熄灭所有灯”选项,当选中该项时,画布上绘制一个半径为0,位置是(0,0)的圆。
3.布局与日历。
实验要求:
编写一个应用程序,有一个窗口,该窗口为BorderLayout布局。
窗口的中心添加一个Panel容器:
pCenter,pCenter的布局是7行7列的GriderLayout布局,pCenter中放置49个标签,用来显示日历。
窗口的北面添加一个Panel容器pNorth,其布局是FlowLayout布局,pNorth放置两个按钮:
nextMonth和previousMonth,单击nextMonth按钮,可以显示当前月的下一月的日历;单击previousMonth按钮,可以显示当前月的上一月的日历。
窗口的南面添加一个Panel容器pSouth,其布局是FlowLayout布局,pSouth中放置一个标签用来显示一些信息。
程序运行效果示例:
程序运行效果如下图所示:
程序模板:
importclassCalendarBean
{
Stringday[];
intyear=2005,month=0;
publicvoidsetYear(intyear)
{=year;
}
publicintgetYear()
{returnyear;
}
publicvoidsetMonth(intmonth)
{=month;
}
publicintgetMonth()
{returnmonth;
}
publicString[]getCalendar()
{Stringa[]=newString[42];
Calendar日历=();
日历.set(year,month-1,1);
int星期几=日历.get-1;
intday=0;
if(month