1、太原理工大学java实验报告 太原理工大学java实验报告 Java语言程序设计 实验报告 学院:计算机科学与技术 专业:计算机科学与技术 班级: 学号: 姓名: 第1页 太原理工大学学生实验报告 学院名称 学生姓名 课程名称 计算机科学与技术 专业班级实验日期学号 成绩 Java语言程序设计 实验题目 Java语言基础 一实验目的 1. 通过实验,掌握java语言程序设计的基本方法。 2. 学会java语言中标识符的命名,运算符和表达式的应用。 3. 较熟练地掌握java程序流程控制语句的应用。 二实验内容 1. 将本教材中例题程序编辑,调试,并运行。 2. 使用for循环语句,不要用顺序结
2、构的简单输出,在屏幕的正中间输出本章习题中的图案2。 3. 编写程序,完成本章习题中第题的编程,调试与运行。 三编译源程序1. public class Ti_5_2 public static void main(String args) int i,j,k=0; for(i=1;i 指导教师相洁 四实验结果 实验1的运行结果 实验2的运行结果 五试验中遇到的问题及体会 在实验过程中,整体都比较完整,基本没遇到什么太大调试问题,算法设计也比较清楚,结果相对比较满意。体会:经过实验使我对本章的知识有了更深一步的理解,也学会了将C语言运用到java语言中的学习方法,对知识做了进一步的巩固,同时也
3、发现各种语言之间总有相同的模块,这也使我对以后各程序设计语言及各专业课的学习奠定基础,创造了条件。 第3页 太原理工大学学生实验报告 学院名称 学生姓名 课程名称 计算机科学与技术 专业班级实验日期学号 成绩 Java语言程序设计 实验题目 Java语言基础 一实验目的 掌握java面向对象程序设计中类,继承,包和接口的概念与应用,能够熟练应用方法,类,成员变量等元素。 二实验内容 1. 创建一个复数类complex,以复数进行数学运算。复数具有如下格式: RealPart+ImaginaryPart*I,其中,I为-1的平方根。要求如下: 利用浮点变量表示此类的私有数据。提供两个构造方法,一
4、个用于此类声明时对象的初始化;一个为带默认值的无参构造方法。 提供两复数加,减,乘的运算方法。 按格式打印复数。其中a为实部,b为虚部。 2. 创建银行账号Account类,实现存款,取和查询等功能。 3. 编程定义一个接口,实现三个数中求最小值和最大值的方法,并将程序存放在getmaths包中。 4. 修改案例1中的部分设计:设计和实现Clipher类的一个子类,它实现如下的加密规则:在字母表中的每个字母用反字母表中的相应位置的字母来代替,如a用z来代替,b用y来代替等。修改()方法使其采用旋转而不是反转。也就是说,通过旋转一个字母,如“hello”则旋转为“ohell”。 三编译源程序 1
5、. public class L01 public static void main(String a) Complex b = new Complex(2, 5);Complex c = new Complex(3, -4);(b + (b + (b + class Complex private double m;/ 实部private double n;/ 虚部public Complex(double m, double n) = m; 实验地点 多学科楼六层606室 第4页 指导教师相洁= n;public Complex add(Complex c) return new Comp
6、lex(m + , n + ); public Complex minus(Complex c) return new Complex(m - , n - ); public Complex multiply(Complex c) return new Complex(m * - n * , m * + n * ); public String toString() String rtr_str = if (n 0)rtr_str = if (n = 0)rtr_str = if (n )(金额不足,请重新输入 else=money;(你取了元 第5页 public class L02 pub
7、lic static void main(String args)Account a=new Account(账户余额为元(500);(你存入元(账户余额为元(300); 3. package mymaths; interface Numpublic void Max();public void Min(); public class interface implements Num int a,b,c; public interface (int a,int b,int c)=a;=b;=c; public void Max()int max;max=ab?a:b;max=maxc?max:
8、c;(三个数中最大值是: public void Min()int min;min=a public abstract class Cipher public String encrypt(String s) StringBuffer result = new StringBuffer(StringTokenizer words = new StringTokenizer(s);while () (encode() + return (); public String decrypt(String s) StringBuffer result = new StringBuffer(String
9、Tokenizer words = new StringTokenizer(s);while () (decode() + return (); public abstract String encode(String word);public abstract String decode(String word); public class Caesar extends Cipher public String encode(String word) StringBuffer result = new StringBuffer();for (int k = 0; k public Strin
10、g decode(String word) return encode(word); public class TestEncrypt public static void main(String argv) Caesar caesar = new Caesar();/Cipher ci =new Cipher();String plain = String secret = (plain);( (Transpose transpose = new Transpose();secret = (plain);( ( 四实验结果实验一的运行结果如下:实验二的运行结果如下:实验三的运行结果如下: 第
11、8页 实验四的运行结果如下:五试验中遇到的问题及体会在实验过程中的确遇到过很多问题,不像前几章那样较容易实现各功能,比如在做实验一时开始的时候各个计算的相关算法确实不容易想,后来在与同学进行探讨后才勉强实现实验要求,还有在做第三题时我还分不清类与接口之间的区别与联系,不过经过仔细看书,发现理解起来也不是很困难,至于题中的算法还相对比较容易实现,另外在实验四中一开始案例一的设计都没看懂,最后在别人的帮助下才得以完成实验内容要求。经过这次实验我发现自己在知识方面还有很多的不足,在平时的练习中也不懂得扩展与举一反三,导致这次的实验做得马马虎虎,除此之外也体会到了面向对象程序设计相对于过程化程序设计的
12、优越性,总之,语言是一门技巧,要想能熟练掌握,必须多加练习。 第9页 太原理工大学学生实验报告 学院名称 学生姓名 课程名称 计算机科学与技术 专业班级实验日期学号 成绩 Java异常处理 Java语言程序设计 实验题目 一实验目的掌握异常的概念,以及如何定义,抛出和捕获处理异常 二实验内容 1.做实验之前要求思考一下问题,作为预习内容:错误和异常有何区别?查看java异常类的关系图。异常是如何抛出,捕获和处理的?java捕获和处理异常的结构是怎样的?try语句如何嵌套?throw语句有何作用?finally程序块的作用是什么? 2.运行下面的程序,理解异常的抛出,捕获与处理。import *
13、; public class ExceptionTest public static void main(String args)for(int i=0;i 指导教师相洁 3.仿照例创建一个自己的异常类。要求:在定义银行类时,若取钱数大于余额则作为异常处理(InsufficientFundsException)。提示: (1)产生异常的条件是余额小于取款额,因此是否抛出异常要先判断该条件。 (2)确定产生异常的方法,应该在取钱方法(withdrawal)中产生异常Insufficient Funds Exception。 (3)处理异常安排在调用withdrawal的时候,因此withdraw
14、al方法要声明异常,上级方法捕获并处理。 (4)将例,例输入计算机,观察运行结果。 三实验过程 1.(1)错误与异常的区别: 错误:指在程序编译时如果程序进入死循环,或递归无法结束,或内存溢出。错误只能在编程阶段解决,只能依靠其他程序干预,否则会一直处于非正常状态。 异常:指运算时除数为0,或操作数超过范围,或打开一个文件时发现文件并不存在,或欲装入的类文件丢失,或网络连接中断等。 (2) java提供了一种利用简单易行的方法检查和处理运行时产生的错误的异常处理机制,它是通过面向对象的方法来处理异常的。在java程序的执行过程中,如果出现了异常事件,就会生成一个异常对象。生成的异常对象将传递给
15、java运行时系统,这一异常的产生和提交过程成为抛弃异常。当java运行时系统得到一个异常对象时,它将会沿着方法的调用栈逐层回溯,寻找处理这一异常的代码。找到能够处理这类异常的方法后,运行时系统把当前异常对象交给这个方法进行处理,这一过程称为捕获异常。 (3) 根据程序对错误与异常的处理方式,可以将java中的异常分为Error类,RuntimeException类和Exception类。其中Error类包括的是一些严重的程序不能处理的系统错误类,如内存溢出,虚拟机错误,栈溢出等。这类错误一般主要与硬件有关,与程序本身无关,通常系统进行处理,程序本身无需去捕获和处理。程序运行过程中,可能出现R
16、untimeException类的异常数量相当大,对于运行时的异常类,如数组越界,算术异常等,应通过程序尽量避免而不是去捕获它。 (4) 为了避免程序运行时可能出现的错误,将程序代码放在try程序块中,紧跟在try语句后面包括一个catch语句,用来指定需要捕获的异常类型。在程序中发生异常时,程序员可以抛出(throw)一个自定义异常类的实例,将其放到异常队列中去,并激活java的异常处理机制。当抛出一个异常时,程序的执行就不再是线性的,这样就有可能导致方法的执行中断。在java语言中,使用finally语句来解决此类问题。Finally语句创建一个代码块,在try/catch语句执行后执行,
17、不管是否抛出一个异常,系统都将执行finally语句的程序代码。 2. import *; 第11页 public class ExceptionTest public static void main(String args)for(int i=0;i (i);(public void loadData(String filename)/Define local variablesFileReader inputFile;Reader reader;StreamTokenizer st;String aString;int aNumber,next;try/Set uplink tofile
18、 and tokenreaderinputFile=new FileReader(reader=new BufferedReader(inputFile);st=new StreamTokenizer(reader);(开始读入数据:/Read contents of filewhile(next=()!=_EOF)if (next=_NUMBER)aNumber=(int);(new Integer(aNumber);elseaString=;(aString+ (aString);/End of while();/Nowclose the file/End of trycatch(IOEx
19、ception e)(读文件出现问题。finally(读文件结束. 4. import *; class Accountpublic String account;public double balance=0;public Account(String account,double balance)/构造方法 =account; 第13页 =balance;public void deposit(double money) +=money;public double getbalance() return ;public double withdrawl(double money) thro
20、ws InsufficientFundsException if(money)throw new InsufficientFundsException();=money; public void process(boolean save, double money) if(save) (你的余额为: else trydouble left = withdrawl(money); catch(InsufficientFundsException e) public class Bank public static void main(String args)Account a=new Accou
21、nt( (账户余额为元 (500);(你存入元 (账户余额为元 (300); 5. class DivideByZeroException extends Exceptionpublic Object offender;public DivideByZeroException(Object anObject)super(offender=anObject; public class L_06_02 int x,y; 第14页 public static void main(String args)L_06_02 my=new L_06_02 (5,0);/对5除以0进行测试 try();cat
22、ch(DivideByZeroException e)(零作除数。 public L_06_02 (int a,int b) x=a;y=b;public void test() throws DivideByZeroExceptionif(y=0)throw new DivideByZeroException(this);else(x/y); 四实验结果 实验2的运行结果如下: 实验3的运行结果如下:第15页 实验4的运行结果如下:实验5的运行结果如下:五试验中遇到的问题及体会 异常指程序在运算时除数为0,或操作数超过范围,或打开一个文件时发现文件并不存在,或欲装入的类文件丢失,或网络连接中
23、断等。而异常处理机制的主要优点是:(1)java通过面向对象的方法进行异常处理,把各种不同的异常处理事件进行分类,体现了良好的层次性,提供了良好的接口。(2)java的异常处理机制使得处理异常的代码和“常规”代码分开,减少了代码的数量,同时增强了程序的可读性。(3)java的异常处理机制使得异常事件可以沿堆栈自动向上传播,而不像C/C+语言中通过函数的返回值来传播,这样可以传递更多的信息并且简化代码的编写。(4)于把异常事件当成对象来处理,利用类的层次性我们可以把多个具有相同父类的异常统一处理,也可以区分不同的异常分别处理,使用非常灵活。(5)java异常处理机制为具有动态运行特性的复杂程序提
24、供了强有力的控制方式。在程序的整个运行过程中,实验二,四都比较容易调试,也没出现任何问题,同时在实验三中创建异常类时于可仿照例进行实验,所以实现起来也相对比较容易,即使如此,我觉得要真正掌握这一部分内容也不是那么容易,所以以后我更应该多去尝试新的题型,希望能彻底把这一部分给掌握了,以至于使所编写的程序更加健壮,完美。 第16页 太原理工大学学生实验报告 学院名称 学生姓名 课程名称 计算机科学与技术 专业班级实验日期学号 成绩 Java语言程序设计 实验题目图形用户界面 一实验目的掌握文本组件,按钮和单,复选按钮组件的使用;掌握列表的使用,鼠标,键盘事件的处理;掌握布局控制的方法。 二实验内容
25、 (1)编写一个Applet程序响应鼠标事件,当事件发生时,在状态条显示相应的事件信息。提示:使用showStatus(字符串)方法。 (2)完成图所示的GUI布局管理,不需要实现功能。 (3)试设计一窗口,内含一个按钮,开始运行时,按钮显示“Click Me”字样,当按钮按下时,按钮显示为”Click Me Again“字样,再按一次,则按钮显示“Click Me”字样,依次循环。 (4)仿照Windows 2000/XP系统提供扫雷游戏编写一个类似功能和界面的扫雷程序。 (5)编写一个简易文本编辑器,参考界面如图所示。要求:包含基本的打开,保存,新建等功能,包含菜单,能够对文本的字体类型和
26、颜色进行设置,力求界面美观。 三程序源代码 (1) import *; import *; public class L08_07 implements MouseMotionListener,MouseListener,WindowListenerprivate Frame frm;private TextField tf;public static void main(String args)L08_07_ListenerImpDemo two = new L08_07_ListenerImpDemo();();public void go()frm = new Frame(三个监听器(n
27、ew Label(拖曳鼠标tf = new TextField(30);(tf,使用缺省的布局管理器(this); /注册监听器MouseMotionListener(this); /注册监听器MouseListener(this); /注册监听器WindowListener(300,200);(true); public void mouseDragged(MouseEvent e)/实现mouseDragged方法 实验地点 多学科楼六层606室 第17页 指导教师相洁String s = 鼠标当前坐标: X=(s);public void mouseMoved(MouseEvent e)
28、/对其不感兴趣的方法可以方法体为空public void mouseClicked(MouseEvent e)public void mouseEntered(MouseEvent e)String s = 鼠标进入了(s);public void mouseExited(MouseEvent e)String s = 鼠标离开了(s);public void mousePressed(MouseEvent e)public void mouseReleased(MouseEvent e)public void windowClosing(WindowEvent e)(1);/为了使窗口能正常
29、关闭,程序正常退出,需要实现windowClosing方法public void windowOpened(WindowEvent e)/对其不感兴趣的方法可以方法体为空public void windowIconified(WindowEvent e)public void windowDeiconified(WindowEvent e)public void windowClosed(WindowEvent e)public void windowActivated(WindowEvent e)public void windowDeactivated(WindowEvent e) (2)
30、 import *; public class L08_02 extends Framestatic Frame frm=new Frame(static Panel pnl=new Panel(new GridLayout(1,4,1,15);static Panel pn2=new Panel(new GridLayout();static Panel pn3=new Panel(new GridLayout(5,1);static Panel pn4=new Panel(new GridLayout(5,1);static Panel pn5=new Panel(new GridLayout(6,1);static Panel pn6=new Panel(new GridLayout(6,1);