Java上机试验指导_第1页
Java上机试验指导_第2页
Java上机试验指导_第3页
Java上机试验指导_第4页
Java上机试验指导_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本文格式为Word版,下载可任意编辑——Java上机试验指导《Java语言程序设计》上机试验指导手册

试验一Java环境演练

①安装并配置Java运行开发环境;

②把握开发Java应用程序的3个步骤:编写源文件、编译源文件和运行应用程序;

③把握开发JavaApplet程序的3个步骤:编写源文件、编译源文件和运行JavaApplet程序;

④学习同时编译多个Java源文件。

1.一个简单的应用程序

?试验要求:

编写一个简单的Java应用程序,该程序在命令行窗口输出两行文字:“你好,很高兴学习Java〞和“Wearestudents〞。

?程序运行效果例如:

程序运行效果如下图所示:

?程序模板:

Hello.java

publicclassHello{

publicstaticvoidmain(Stringargs[]){

//命令行窗口输出\你好,很高兴学习Java\Aa=newA();a.fA();}}classA{

voidfA(){

//命令行窗口输出\}}

?试验后的练习:

1.编译器怎样提醒丢失大括号的错误?2.编译器怎样提醒语句丢失分号的错误?

3.编译器怎样提醒将System写成system这一错误?

1

4.编译器怎样提醒将String写成string这一错误?

2.一个简单的JavaApplet程序

?试验要求:

编写一个简单的JavaApplet程序,并在JavaApplet中写两行文字:“这是一个JavaApplet程序〞和“我改变了字体〞。

?程序运行效果例如:

程序运行效果如下图所示:

?程序模板:

FirstApplet.java

importjava.applet.*;importjava.awt.*;

publicclassFirstAppletextendsApplet{

publicvoidpaint(Graphicsg){

g.setColor(Color.blue);

//在JavaApplet中绘制一行文字:“这是一个JavaApplet程序〞

g.setColor(Color.red);

g.setFont(newFont(\宋体\

//在JavaApplet中绘制一行文字:“我改变了字体〞}}

?试验后的练习:

5.程序中的主类假使不用public修饰,编译能通过吗?

6.程序中的主类假使不用public修饰,程序能正确运行吗?7.程序将paint方法误写成Paint,编译能通过么?

8.程序将paint方法误写成Paint,运行时能看到有关的输出信息吗?

3.联合编译

?试验要求:

编写4个源文件:Hello.java、A.java、B.java和C.java,每个源文件只有一个类,Hello.java是一个应用程序(含有main方法),使用了A、B和C类。将4个源文件保存到同一目录中,例如:C:\\100,然后编译Hello.java。

?程序运行效果例如:

程序运行效果如下图所示:

?程序模板:

模板1:Hello.java

publicclassMainClass{

publicstaticvoidmain(Stringargs[]){

2

//命令行窗口输出\你好,只需编译我\Aa=newA();a.fA();Bb=newB();b.fB();}}

模板2:A.java

publicclassA{

voidfA(){

//命令行窗口输出\}}

模板3:B.java

publicclassB{

voidfB(){

//命令行窗口输出\}}

模板4:C.java

publicclassC{

voidfC(){

//命令行窗口输出\}

}

?试验后的练习:

9.将Hello.java编译通过后,不断修改A.java源文件中的代码,譬如,在命令

行窗口输出“我是A类〞或“我被修改了〞。要求每次修改A.java源文件后,单独编译A.java,然后直接运行应用程序Hello。

10.假使需要编译某个目录下的全部Java源文件,譬如C:\\1000目录,可以使

用如下命令:c:\\1000\\javac*.java

将本次上机试验结果依照以上内容依次填写试验目标、过程、结果。

3

①试验报告要求每人提交一份,使用专门的报告纸,内容写全,包括试验名称、班级、姓名、同组人,试验日期、交报告日期等。②报告不需要填写源代码,只要将完成状况和所有练习题结果写上就可以。

试验二Java基本数据类型与控制语句

①把握char型数据和int型数据之间的相互转换,同时了解unicode字符表;

②把握使用if…elseif多分支语句;

③使用if…else分支和while循环语句解决问题。

1.输出希腊字母表。

?试验要求:

编写一个Java应用程序,该程序在命令行窗口输出希腊字母表。

?程序运行效果例如:

程序运行效果如下图所示:

?程序模板:

GreekAlphabet.java

publicclassGreekAlphabet{

publicstaticvoidmain(Stringargs[]){

intstartPosition=0,endPosition=0;charcStart='α',cEnd='ω';

//cStart做int型转换据运算,并将结果赋值给startPosition//cEnd做int型转换运算,并将结果赋值给endPositionSystem.out.println(\希腊字母\\'α\\'在unicode表中的顺序位置:\System.out.println(\希腊字母表:\for(inti=startPosition;i

publicstaticvoidmain(Stringargs[]){

doublelength,area;Circlecircle=null;Trangletrangle;Laderlader;

//创立对象circle//创立对象trangle。//创立对象lader

//circle调用方法返回周长并赋值给lengthSystem.out.println(\圆的周长:\

//circle调用方法返回面积并赋值给areaSystem.out.println(\圆的面积:\

//trangle调用方法返回周长并赋值给lengthSystem.out.println(\三角形的周长:\

//trangle调用方法返回面积并赋值给areaSystem.out.println(\三角形的面积:\

//lader调用方法返回面积并赋值给areaSystem.out.println(\梯形的面积:\

//trangle调用方法设置三个边,要求将三个边修改为12,34,1。//trangle调用方法返回面积并赋值给areaSystem.out.println(\三角形的面积:\

//trangle调用方法返回周长并赋值给lengthSystem.out.println(\三角形的周长:\}}

?试验后的练习:

1.程序中仅仅省略,编译能通过吗?2.程序中仅仅省略,编译能通过吗?

3.程序中仅仅省略,运行时出现怎样的异常提醒?

4.给Trangle类增加3个方法,分别用来返回3个边:sideA、sideB和sideC。5.让AreaAndLength类中的circle对象调用方法修改半径,然后输出修改后的

半径以及修改半径后的圆的面积和周长。

2.实例成员与类成员。

?试验要求:

按程序模板的要求编写源文件,要特别注意程序的输出结果,并能正确解释输出的结果。

?程序运行效果例如:

程序运行效果如下图所示:

?程序模板:

Example.java

classA{

11

//声明一个float型实例变量a

//声明一个float型类变量b,即static变量bvoidsetA(floata){

//将参数a的值赋值给成员变量a}

voidsetB(floatb){

//将参数b的值赋值给成员变量b}

floatgetA(){returna;}

floatgetB(){returnb;}

voidinputA(){

System.out.println(a);}

staticvoidinputB(){

System.out.println(b);}}

publicclassExample{

publicstaticvoidmain(Stringargs[]){

//通过类名操作类变量b,并赋值100//通过类名调用方法inputB()Acat=newA();Adog=newA();

//cat象调用方法setA(inta)将cat的成员a的值设置为200//cat调用方法setB(intb)将cat的成员b的值设置为400//dog象调用方法setA(inta)将dog的成员a的值设置为150//dog调用方法setB(intb)将dog的成员b的值设置为300//cat调用inputA()。//cat调用inputB()。//dog调用inputA()。//dog调用inputB()。}

12

}

?试验后的练习:

1.将inputA()方法中的

System.out.println(a);改写为

System.out.println(a+b);编译是否出错?为什么?2.将inputB()方法中的

System.out.println(b);

改写为

System.out.println(a+b);编译是否报错?为什么?

3.使用package语句与import语句。

?试验要求:

按试验要求使用package语句,并用import语句使用Java平台提供的包中的类以及自定义包中的类。把握一些重要的操作步骤。

?程序运行效果例如:

程序运行效果如下图所示:

?程序模板:

模板1:

将模板1给出的Java源文件命名为SquareEquation.java,将编译后得到的

字节码文件复制到c:\\1000\\tom\\jiafei目录中。SquareEquation.java

packagetom.jiafei;

publicclassSquareEquation{

doublea,b,c;doubleroot1,root2;booleanboo;

publicSquareEquation(doublea,doubleb,doublec){

this.a=a;this.b=b;this.c=c;if(a!=0){

boo=true;}else{

boo=false;}

13

}

publicvoidgetRoots(){if(boo){

System.out.println(\是一元2次方程\doubledisk=b*b-4*a*c;if(disk>=0){

root1=(-b+Math.sqrt(disk))/(2*a);root2=(-b-Math.sqrt(disk))/(2*a);

System.out.printf(\方程的根:%f,%f\\n\}else{System.out.printf(\方程没有实根\\n\}}else{

System.out.println(\不是一元2次方程\}}

publicvoidsetCoefficient(doublea,doubleb,doublec){

this.a=a;this.b=b;this.c=c;if(a!=0){

boo=true;}else{

boo=false;}}}

模板2:

将模板2给出的Java源程序SunRise.java保存到d:\\2000中。在编译模板2给出的Java源文件之前,要重新设置classpath。假设本地机SDK的安装目录是E:\\jdk1.5。

在命令行执行如下命令:

14

setclasspath=e:\\jdk1.5\\jre\\lib\\rt.jar;.;c:\\1000

然后编译模板2给出的Java源程序。或用鼠标右键点击“我的电脑〞,弹出快捷菜单,然后选择“属性〞命令,弹出“系统属性〞对话框,再单击该对话框中的“高级〞选项卡,然后单击“环境变量〞按钮。将classpath的值修改为:

E:\\jdk1.5\\jre\\lib\\rt.jar;.;c:\\1000

然后重新开启一个命令行窗口,编译模板2给出的Java源程序。

SunRise.java

importtom.jiafei.*;classSunRise{

publicstaticvoidmain(Stringargs[]){

SquareEquationequation=newSquareEquation(4,5,1);equation.getRoots();

equation.setCoefficient(-3,4,5);equation.getRoots();}}

?试验后的练习:

假设SDK的安装目录是E:\\jdk1.5,那么Java运行系统默认classpath的值是:E:\\jdk1.5\\jre\\lib\\rt.jar;.;

其中的“〞表示应用程序可以使用当前目录中的无名包类以及当前目录下的子目录中的类,子目录中的类必需有包名,而且包名要和子目录结构相对应。

因此,假使将模板2应用程序Sunrise.java的字节码文件存放到d:\\5000中,并将SquareEquation.java的字节码文件存放在D:\\5000\\tom\\jiafei中,那么就不需要修改classpath。要特别注意的是,由于SquareEquation.java有包名,切不可将SquareEquation.java以及它的字节码文件存放在d:\\5000中,即不可以和Sunrise.java的字节码存放在一起,请进行如下的练习:1.将SquareEquation.java存放在D:\\5000\\tom\\jiafei中,编译:D:\\5000\\tom\\jiafei\\javacSquareEquation.java2.将Sunrise.java存放到D:\\5000中,编译:D:\\5000\\javacSunrise.java3.运行:javaSunrise

将本次上机试验结果依照试验要求内容依次进行,填写试验目标、过程、结果。

①试验报告要求每人提交一份,使用专门的报告纸,内容写全,包括试验名称、班级、姓名、同组人,试验日期、交报告日期等。

②报告不需要填写源代码,只要将完成状况和所有练习题结果写上就可以。

15

试验四字符串、时间与数字类

①把握String类的常用方法

②把握Date类以及Calendar类的常用方法;③把握BigInteger类的常用方法。

1.String类的常用方法。

?试验要求:

编写一个Java应用程序,判断两个字符串是否一致,判断字符串的前缀、后缀是否和某个字符串一致,按字典顺序比较两个字符串的大小关系,检索字符串,创立字符串,将数字型字符串转换为数字,将字符串存放到数组中,用字符数组创立字符串。。

?程序运行效果例如:

程序运行效果如下图所示:

?程序模板:

StringExample.java

classStringExample

{publicstaticvoidmain(Stringargs[])

{Strings1=newString(\s2=newString(\

if()//使用equals方法判断s1与s2是否一致{

System.out.println(\与s2一致\}else{

System.out.println(\与s2不一致\}

Strings3=newString(\

if()//判断s3的前缀是否是“220302〞。{

System.out.println(\吉林省的身份证\}

Strings4=newString(\你\s5=newString(\我\

if()//按着字典序s4大于s5的表达式。{

System.out.println(\按字典序s4大于s5\}else{

16

System.out.println(\按字典序s4小于s5\}

intposition=0;

Stringpath=\

position=//获取path中最终出现目录分隔符号的位置System.out.println(\中最终出现\\\\的位置:\StringfileName=//获取path中“A.java〞子字符串。System.out.println(\中含有的文件名:\Strings6=newString(\s7=newString(\

intn1=//将s6转化成int型数据。doublen2=//将s7转化成double型数据。doublem=n1+n2;System.out.println(m);

Strings8=//String调用valuOf(intn)方法将m转化为字符串对象position=s8.indexOf(\

Stringtemp=s8.substring(position+1);

System.out.println(\数字\有\位小数\Strings9=newString(\

chara[]=//将s8存放到数组a中。for(inti=a.length-1;i>=0;i--){

System.out.print(\}}}

?试验后的练习:

1.程序中的s6改写成

Strings6=newString(“1a12b〞);运行时提醒怎样的错误?

2.请用数组a的前3个单元创立一个字符串并输出该串。3.请给出获取path中“jsp〞子字符串的代码。4.在程序的适当位置增加如下代码,注意输出的结果。

Stringstr1=newString(“ABCABC〞),

str2=null,str3=null,str4=null;

str2=str1.replaceAll(“A〞,〞First〞);str3=str2.replaceAll(“B〞,〞Second〞);str4=str3.replaceAll(“C〞,〞Third〞);System.out.println(str1);System.out.println(str2);System.out.println(str3);System.out.println(str4);

17

5.可以使用Long类中的以下static方法得到整数各种进制的字符串表示:PublicstaticStringtoBinaryString(longi)PublicstaticStringtoOctalString(longi)

PublicstaticStringtoHexString(longi)PublicstaticStringtoString(longi,intp)

其中的toString(longi,intp)返回整数i的p进制表示。请在适当位置添加代码输出12345的二进制、八进制和十六进制表示。

6.在适当位置添加代码,分别输出数字m的整数部分和小数部分。

2.比较日期的大小。

?试验要求:

编写一个Java应用程序,用户从输入对话框输入了两个日期,程序将判断两个日期的大小关系,以及两个日期之间的间隔天数。

?程序运行效果例如:

程序运行效果如下图所示:

?程序模板:

DateExample

importjava.util.*;

importjavax.swing.JOptionPane;publicclassDateExample{

publicstaticvoidmain(Stringargs[]){

Stringstr=JOptionPane.showInputDialog(\输入第一个日期的年份:\intyearOne=Integer.parseInt(str);

str=JOptionPane.showInputDialog(\输入该年的月份:\intmonthOne=Integer.parseInt(str);

str=JOptionPane.showInputDialog(\输入该月份的日期:\intdayOne=Integer.parseInt(str);

str=JOptionPane.showInputDialog(\输入其次个日期的年份:\intyearTwo=Integer.parseInt(str);

str=JOptionPane.showInputDialog(\输入该年的月份:\intmonthTwo=Integer.parseInt(str);

str=JOptionPane.showInputDialog(\输入该月份的日期:\intdayTwo=Integer.parseInt(str);

Calendarcalendar=//初始化日历对象

//将calendar的时间设置为yearOne年monthOne月dayOne日

longtimeOne=//calendar表示的时间转换成毫秒

//将calendar的时间设置为yearTwo年monthTwo月dayTwo日

longtimeTwo=//calendar表示的时间转换成毫秒。

18

Datedate1=//用timeOne做参数构造date1Datedate2=//用timeTwo做参数构造date2if(date2.equals(date1)){

System.out.println(\两个日期的年、月、日完全一致\}

elseif(date2.after(date1)){

System.out.println(\您输入的其次个日期大于第一个日期\}

elseif(date2.before(date1)){

System.out.println(\您输入的其次个日期小于第一个日期\}

longdays=//计算两个日期相隔天数

System.out.println(yearOne+\年\月\日和\

+yearTwo+\年\月\相隔\天\}}

?试验后的练习:

1.Calendar对象可以将时间设置到年、月、日、时、分、秒。请改进上面的程序,使用户输入的两个日期包括时、分、秒。

2.根据本程序中的一些知识,编写一个计算利息(按天计算)的程序。从输入对话框输入存款的数目和起止时间。

3.处理大整数。

?试验要求:

编写一个Java应用程序,计算两个大整数的和、差、积和商,并计算一个大整数的因子个数(因子中不包括1和大整数本身)。

?程序运行效果例如:

程序运行效果如下图所示:

?程序模板:

BigintegerExample

importjava.math.*;classBigIntegerExample{

publicstaticvoidmain(Stringargs[])

{BigIntegern1=newBigInteger(\n2=newBigInteger(\result=null;

19

result=//n1和n2做加法运算

System.out.println(\和:\result=//n1和n2做减法运算

System.out.println(\差:\result=//n1和n2做乘法运算

System.out.println(\积:\result=//n1和n2做除法运算

System.out.println(\商:\BigIntegerm=newBigInteger(\COUNT=newBigInteger(\ONE=newBigInteger(\TWO=newBigInteger(\

System.out.println(m.toString()+\的因子有:\

for(BigIntegeri=TWO;pareTo(m)noSameWord.setElementAt((String)noSameWord.elementAt(n),m);noSameWord.setElementAt(temp,n);intt=count[m];count[m]=count[n];count[n]=t;}}}

for(intm=0;m

WordThread(Labelcom){=com;}

publicvoidrun(){k=19968;while(true){

word=(char)k;

com.setText(\

try{//调用sleep方法使得线程中断6000豪秒}

catch(InterruptedExceptione){}k++;

if(k>=29968)k=19968;}}}

ThreadFrame.java

importjava.awt.*;importjava.awt.event.*;

publicclassThreadFrameextendsFrameimplementsActionListener{

LabelwordLabel;Buttonbutton;

TextFieldinputText,scoreText;

//用WordThread声明一个giveWord对象intscore=0;ThreadFrame()

{wordLabel=newLabel(\wordLabel.setFont(newFont(\button=newButton(\开始\inputText=newTextField(3);scoreText=newTextField(5);scoreText.setEditable(false);

//创立giveWord,将wordLabel传递给WordThread构造方法的参数button.addActionListener(this);inputText.addActionListener(this);add(button,BorderLayout.NORTH);add(wordLabel,BorderLayout.CENTER);PanelsouthP=newPanel();

southP.add(newLabel(\输入标签所显示的汉字后回车:\southP.add(inputText);southP.add(scoreText);

add(southP,BorderLayout.SOUTH);

31

setBounds(100,100,350,180);setVisible(true);validate();

addWindowListener(newWindowAdapter()

{publicvoidwindowClosing(WindowEvente){System.exit(0);}});}

publicvoidactionPerformed(ActionEvente){

if(e.getSource()==button)

{if(!())//giveWord调用方法isAlive(){giveWord=newWordThread(wordLabel);}

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论