java实验报告4
java实训报告(精选5篇)
java实训报告(精选5篇)java实训报告1作为就业培训,项目的好坏对培训质量的影响十分大,常常是决定性的作用。
这篇__是关于在学习java软件开发时练习项目的总结,简单总结为以下几点:1、项目一定要全新的项目,不能是以前做过的2、项目一定要企业真实项目,不能是精简以后的,不能脱离实际应用系统3、在开发时要和企业的开发保持一致4、在做项目的时候不应该有参考代码长话短说就是以上几点,如果你想要更多的了解,可以继续往后看。
一:项目的地位因为参加就业培训的学员很多都是有一定的计算机基础,大部分都具备一定的编程基础,尤其是在校或者是刚毕业的学生,多少都有一些基础。
他们欠缺的主要是两点:(1)不能全面系统的、深入的掌握某种技术,也就是会的挺多,但都是皮毛,不能满足就业的需要。
(2)没有任何实际的开发经验,完全是想象中学习,考试还行,一到实际开发和应用就歇菜了。
解决的方法就是通过项目练习,对所学知识进行深化,然后通过项目来获取实际开发的经验,从而弥补这些不足,尽快达到企业的实际要求。
二:如何选择项目项目既然那么重要,肯定不能随随便便找项目,那么究竟如何来选择呢?根据java的研究和实践经验总结,选择项目的时候要注意以下方面:1:项目不能太大,也不能太小这个要根据项目练习的阶段,练习的时间,练习的目标来判断。
不能太大,太大了做不完,也不能太小,太小了没有意义,达不到练习的目的。
2:项目不能脱离实际应用系统项目应该是实际的系统,或者是实际系统的简化和抽象,不能够是没有实战意义的教学性或者是纯练习性的项目。
因为培训的时间有限,必须让学员尽快地融入到实际项目的开发当中去。
任何人接受和掌握一个东西都需要时间去适应,需要重复几次才能够真正掌握,所以每个项目都必须跟实际应用挂钩。
3:项目应能覆盖所学的主要知识点学以致用,学完的知识点需要到应用中使用,才能够真正理解和掌握,再说了,软件开发是一个动手能力要求很高的行业,什么算会了,那就是能够做出来,写出代码来,把问题解决了,你就算会了。
java实验报告4
实验4 Java 语言面向对象基础编程一.实验目的(1)通过编程和上机实验理解Java语言是如何体现面向对象编程基本思想(2)如何创建类和对象二、实验要求1、编写一个体现面向对象思想的程序;2、编写一个创建对象和使用对象的方法的程序;3、编写体现构造方法重载的程序;三.实验内容1、定义类创建类对象设计类来描述真实客观世界中的事物,使用类的成员变量来表示事物的属性和状态,使用类的成员方法来提供对成员变量的访问或修改(1)程序功能:设计一个用来描述汽车的类,使用类的非静态成员变量来表示汽车的车主姓名、当前的速率和当前方向盘的转向角度,使用类的非静态成员方法来表示改变汽车的速率和停车两个操作。
源代码:(自己编写)创建类的对象,使用对象的方法(类的非静态方法)来访问或修改对象的变量(类的非静态变量)(1)创建上面第一步的类的对象,在调用类的构造函数时指定对象的变量的初始值,以后再使用对象的方法来访问或修改对象的变量的值。
源代码:2、构造方法重载构造方法的名称和类同名,没有返回类型。
尽管构造方法看起来和一般的成员方法没有差别,但它不是方法,也不是类的成员。
因此,构造方法不能直接调用,只能由new 操作符调用。
构造方法对于类是十分重要的,对象的初始化任务要靠构造方法来完成。
重载构造方法的目的是提供多种初始化对象的能力,使程序员可以根据实际需要选用合适的构造方法来初始化对象。
源代码如下:class RunDemo {private String userName, password;在该处编写不带参数的构造方法在该处编写带一个参数的构造方法在该处编写带两个参数的构造方法}public class EXP2 {public static void main(String[] args) {//使用不同的构造方法进行对象的初始化}}3、调用方法时参数传递的练习在Java 中,方法中的参数传递可以分为传值调用或对象方法调用等方式。
南昌大学java实验报告4
南昌大学实验报告学生姓名:学号:专业班级:网络工程091实验类型:□验证□综合□设计□创新实验日期:2012.5.18 实验成绩:实验四简单的万年历一、实验目的学习使用布局类。
二、实验任务编写一个应用程序,有一个窗口,该窗口为BorderLayout布局。
窗口的中心添加一个Panel容器:pCenter,pCenterd的布局是7行7列的GridLayout布局,pCenter中放置49个标签,用来显示日历。
窗口的北面添加一个Panel容器pNorth,其布局是FlowLayout布局,pNorth放置两个按钮:nextMonth和previousMonth,单击nextMonth按钮,可以显示当前月的下一月的日历;单击previousMonth按钮可以显示当前月的上一月的日历。
窗口的南面添加一个Panel容器pSouth,起布局是FlowLayout,pSouth中放置一个标签用来显示一些信息。
三、实验内容编译并运行程序,查看结果。
程序如下:CalendarFRame.javapackage calendar;import java.awt.BorderLayout;import java.awt.Button;import java.awt.GridLayout;import bel;import java.awt.Panel;import java.awt.ScrollPane;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JFrame;public class CalendarFrame extends JFrame implements ActionListener { Label labelDay[]=new Label[42];Button titleName[]=new Button[7];String name[]={"日","一","二","三", "四","五","六"};Button nextMonth,previousMonth;int year=2012,month=5;CalendarBean calendar;Label showMessage=new Label("",Label.CENTER);public CalendarFrame(){Panel pCenter=new Panel();pCenter.setLayout(new GridLayout(7,7));//将pCenter的布局设置为7行7列的GridLayout 布局。
java实训报告(通用9篇)
java实训报告java实训报告(通用9篇)在当下社会,大家逐渐认识到报告的重要性,写报告的时候要注意内容的完整。
那么一般报告是怎么写的呢?下面是小编精心整理的java实训报告,欢迎大家借鉴与参考,希望对大家有所帮助。
java实训报告篇1一、实训目的1.熟练掌握Java面向对象程序设计的基础知识。
2.熟练掌握Java中常用的Swing组件的使用方法。
3.熟练掌握Java程序中图形用户界面设计的方法。
4.熟练掌握使用JDBC操作数据库的方法。
5.通过实训,培养学生分析和解决实际问题的能力,提高调试和分析应用程序的能力,并为后续Java高级编程等专业课程的学习奠定良好的基础。
二、课程设计报告内容2.1 实训内容本课程设计的题目是设计一个简化的仓库管理系统。
该系统从仓库管理人员的角度出发,实现对货物信息、生产商信息的浏览、添加、删除和查询,同时还可以对货物出货、入货进行操作和控制。
设计内容主要包括系统分析、数据库、数据表的创建、系统各个窗体的布局及其编码实现。
系统功能分析是在系统开发的总体任务的基础上完成的。
该管理系统需要完成的基本功能主要有:用户管理:主要包括用户的添加、修改和删除。
供应商管理:主要包括供应商的添加、删除和修改。
产品管理:主要包括产品的添加、删除和进货、出货。
产品视图管理:主要包括产品查询、数据文件的导入、查询结果集的导出。
2.2 实训设备或软、硬件硬件:PⅣ及以上性能的PC机;软件:Windows 20xx或Windows XP系统;JDK工具;JCreator4.0环境2.3 功能设计及思想本次实训设计采用选择结构化开发方法,即用系统工程的思想和工程化的方法,按照用户至上的原则,自顶向下整体分析与设计和自底向上逐步实施的系统开发过程。
是组织、管理和控制信息系统开发过程的一种基本框架。
其基本思想:在系统分析时,采用自顶向下、逐层分解,由抽象到具体的逐步认识问题的过程;在系统设计的时候,先考虑系统整体的优化,再考虑局部的优化问题;在系统实施的时候,则坚持自底向上,先局部后整体,通过标准化模块的连接形成完整的系统。
java第四次实验报告
this.year = year;
this.day = day;
}
public void ChangeToDate(Date1 date) {
String Month[] =
{
"January","Februry","March", "April", "May","June",
{"drove","jumped","ran","walked","skiped"},
{"to","from","over","'under","on"},
{"the","a","one","some","any"},
{"boy","girl","dog","town","car"} };
TextArea output;
Button m;
int b,c;
public void init() {
output=new TextArea(25,50);
m=new Button("开始");
add(output);
add(m);
}
public boolean action(Event e,Object o){
output.setText ("");
实验报告 Java输入、输出和异常处理
实验四Java输入、输出和异常处理一、实验目的1.了解I/O流的使用;2.掌握常见的输入/输出流类及其主要方法。
3.熟悉S y s t e m类,掌握标准输入/输出。
4.学会利用Tr y-c a t c h-f i n a l l y语句来捕获和处理异常;5.掌握自定义异常类的方法。
二、实验要求1.使用标准数据流的应用程序。
2.使用文件输入输出流的应用程序。
3.通过编程理解系统异常处理的机制和创建自定义异常的方法。
三、实验内容(一)使用标准数据流的应用程序标准数据流指在字符方式下(如D O S提示符)程序与系统进行输入输出的方式,键盘和显示器屏幕是标准输入输出设备,数据输入的起点为键盘,数据输出的终点是屏幕,输出的数据可以在屏幕上显示出来。
1.程序功能:将键盘上输入的字符在屏幕上显示出来。
2.编写S Y4_1.j a v a程序文件,源代码如下:c l a s s S Y4_1{p u b l i c s t a t i c v o i d m a i n(S t r i n g[]a rg s)t h r o w s j a v a.i o.I O E x c e p t i o n {b y t e b u ff e r[]=n e w b y t e[10];S y s t e m.o u t.p r i n t l n("从键盘输入不超过10个字符,按回车键结束输入:");i n t c o u n t=S y s t e m.i n.r e a d(b u f f e r);//读取输入的字符并存放在缓冲区b u ff e r中S y s t e m.o u t.p r i n t l n("保存在缓冲区b u ff e r中元素的个数为:"+c o u n t);S y s t e m.o u t.p r i n t l n("b u f f e r中各元素的值为:");f o r(i n t i=0;i<c o u n t;i++){S y s t e m.o u t.p r i n t(""+b u ff e r[i]);//在屏幕上显示b u ff e r 元素的值}S y s t e m.o u t.p r i n t l n();S y s t e m.o u t.p r i n t l n("输出b u ff e r字符元素:");S y s t e m.o u t.w r i t e(b u ff e r,0,b u f f e r.l e n g t h);}}3.编译、运行S Y4_1.j a v a文件。
JAVA实验报告
实验一:实验目的●学习下载最新版本的JDK。
●学习安装与设置JDK运行环境。
●解决JDK开发环境配置中的常见问题。
实验二:实验目的●了解Java应用程序的结构。
●学习Java应用程序源程序的编辑。
●学习Java源程序的编译。
●学习Java应用程序的运行。
●学习解决Java源程序编译过程中的常见问题。
实验要求编写一个比较简单的Java应用程序,该程序将会在命令提示符窗口下输出一句话:Java 世界欢迎你!实验三:实验目的●了解Java小程序的结构。
●学习Java小程序的编译、运行。
●了解Html语言中的Applet标签。
实验四:实验目的●学习标识符的命名规则。
●学习基本数据类型变量的声明。
●学习基本数据类型变量的初始化。
●明确局部变量使用前初始化的意义。
●学习常量的使用。
实验要求编写一个Java 程序,在程序中声明各种基本数据类型的变量,对它们进行初始化,再显示它们各自的值;定义一个双精度数据类型的常量,并显示它的值。
实验五:实验目的●学习算术运算符中的求模运算。
●学习算术运算符中的自增运算。
●学习算术运算符中的自减运算。
实验要求编写一个Java 程序,在程序中进行求模运算、自增和自减运算。
实验五:实验目的●学习算术运算符中的求模运算。
●学习算术运算符中的自增运算。
●学习算术运算符中的自减运算。
实验要求编写一个Java 程序,在程序中进行求模运算、自增和自减运算。
实验六:实验目的●学习算术运算符中的整数除法。
●学习算术运算符中的浮点数除法。
●学习算术运算符中的整数与浮点数混合除法。
实验要求编写一个Java 程序,在程序中进行整数除法、浮点数除法和整数与浮点数混合除法运算。
实验七:实验目的●学习逻辑运算符中的与运算。
●学习逻辑运算符中的或运算。
●学习逻辑运算符中的非运算。
实验要求编写一个Java 程序,在程序中进行与运算、或运算和非运算。
实验八:实验目的●学习字符串转换为数值型数据的方法。
●学习数值型数据转换成字符串的方法。
Java程序设计实验报告4
课程实验报告
的文件对象,然后对str中的每个对象调用isFile()方法判断是否是文本文件,并计数输出
(4)在外层使用for循环对每个文本文件遍历行数
(5)在内层创建FileReader类的对象reader1和BufferedReader类的对象reader2,设置行数rows=0,分别读每个文本文件计算行数
调试过程及实验结果1. 2.
总结通过第一个实验我熟悉了BufferedReader、BufferedWriter等流类的相关使用方法,掌握了向文件中读写数据的基本步骤;通过第二个实验我掌握了Java File类相关方法的调用和使用,熟悉对文本文件和非文本文件基本方法的使用。
附录(手抄源程序清单,对关键步骤需要添加注释,写在报告背面即可,无需附页,严禁打印)
*注意:
--雷同无效,禁止抄袭;
--A4纸单面打印,左侧装订,2个钉;
--以班为单位,各班负责人收齐并按学号由小到大顺序排序后上交;。
java_实验四
武汉工程大学计算机科学与工程学院实验报告[4]一、实验目的1)了解Java.awt包及Swing的新增特性。
2)了解Java系统图形用户界面的基本工作原理和界面设计的步骤。
3)了解图形用户界面的事件响应机制。
4)了解图形用户界面各种常用的基本组件的使用方法及其事件响应。
5)掌握Java常用组件的应用6)掌握图形用户界面各种布局策略的设计与使用二、实验要求1)创建一个简单的图形用户界面。
2)使用Java类库中提供的组件,并添加到图形用户界面中。
3)通过Java事件处理机制,实现与用户的交互信息。
4)练习使用布局管理器5)使用Java类库中提供的组件,并添加到图形用户界面中6)通过Java事件处理机制,实现与用户的交互信息三、实验内容对一个优秀的应用程序来说,良好的图形用户界面是必不可少的。
因为只有通过图形界面,用户才能够与程序友好的交互。
缺少良好的图形用户界面,将会给用户理解和应用程序带来很多不便。
创建一个完整的图形用户界面的应用程序大致流程如下:1)引用需要的包和类。
2)设置一个顶层的容器。
3)根据需要为容器设置布局管理器或使用默认布局管理器。
4)将组件添加到容器内,位置自行设计。
5)为响应事件的组件编写事件处理代码。
下面我们先建立一个简单的图形用户界面,然后通过合适的布局管理器,将各种常用组件添加到图形用户界面中,实现与用户的交互信息。
1. 创建简单的图形用户界面(1)创建简单的 Frame 框架在 AWT 库中,对应于框架的类是 Frame,在 Swing 库中,相应的类是 JFrame。
JFrame 类扩展了 Frame 类。
大部分 ATWT 组件在 Swing 中都有等价的组件,它们在表示形式上差一个“J”。
框架是一个容器,可以在这个容器中放入其他一些图形用户界面组件,如按钮、菜单等,从而组成一个功能完善的程序。
下面的例子是建立一个 Frame 框架,通过这个例子学习如何创建一个简单的图形用户界面。
JAVA实验报告
JAVA实验报告一、实验目的本次 Java 实验的主要目的是通过实际编程操作,深入理解 Java 语言的基本语法、面向对象编程的概念以及常用类库的使用。
同时,培养自己解决实际问题的能力,提高编程的熟练程度和代码质量。
二、实验环境操作系统:Windows 10开发工具:EclipseJDK 版本:18三、实验内容及步骤(一)基本语法练习1、数据类型与变量定义不同类型的变量,如整数型(int)、浮点数型(float、double)、字符型(char)和字符串型(String),并进行赋值和输出操作。
了解不同数据类型的取值范围和精度,以及在实际编程中的应用场景。
2、控制结构编写使用 ifelse 语句、switch 语句进行条件判断的程序。
运用 for 循环、while 循环和 dowhile 循环实现重复执行的操作。
3、数组与字符串声明和初始化一维数组和二维数组,对数组元素进行访问和操作。
进行字符串的拼接、截取、查找等常见操作。
(二)面向对象编程实践1、类与对象定义一个简单的类,包含属性和方法。
创建该类的对象,并调用对象的方法来操作属性。
2、继承与多态建立父类和子类,实现继承关系。
在子类中重写父类的方法,展示多态性。
3、封装与抽象将类的属性设置为私有,并提供公共的访问方法(getter 和 setter),实现封装。
定义抽象类和抽象方法,体会抽象的概念和作用。
(三)常用类库的使用1、 Java 输入输出(IO)使用 Scanner 类实现从控制台读取用户输入的数据。
运用 File 类和相关的输入输出流类,实现文件的读取和写入操作。
2、集合框架熟悉 ArrayList、LinkedList 等线性集合的使用方法。
了解 HashSet、TreeSet 等集合的特点和应用场景。
3、异常处理在程序中加入可能引发异常的代码段,并使用 trycatch 语句捕获和处理异常。
四、实验结果与分析(一)基本语法练习1、数据类型与变量成功定义了各种数据类型的变量,并正确进行了赋值和输出。
Java实验四报告
一、实验目的1.掌握Java语言中继承和多态的相关概念2.掌握Java程序设计中继承和多态机制的使用3.掌握Java语言中接口和包的概念及使用。
二、实验内容1.题目:1.继承多态综合练习1(1)建立一个Java抽象类Drink,应当:①声明一个抽象方法taste(),该方法负责输出饮料的味道;②声明int型常量来代表不同的饮料类型(咖啡、啤酒、牛奶),如:③声明静态方法getDrink(int drinkType),根据传入的参数创建不同的饮料对象,并返回该对象,建议使用switch语句。
(2)建立Drink的子类:①分别建立Drink的子类:Coffee(咖啡类),Beer(啤酒类),Milk(牛奶类);②实现taste()方法,要求在控制台打印各自的味道特征。
(3)建立Test测试类,测试以上内容的正确性①编写main方法,输入要新建的饮料类型。
②调用Drink类的getDrink方法,获得相应的饮料对象。
然后调用该饮料对象的taste()方法,输出该饮料的味道。
②编译程序,并运行。
要求:测试类放在包名为com.sy4.exe02.test包中,其它类放在com.sy4.exa02包中。
(知识点:类的定义,抽象类,继承,多态)2.继承多态综合应用练习2(1)定义一个抽象的People类,有姓名(name),年龄(age),性别(sex)等成员变量,要求成员变量的访问修饰符为private,通过getXxx()和setXxx()方法对各变量进行读写。
声明具有一个抽象的role()方法,该方法不返回任何值,用于输出人的身份类型,同时至少定义两个构造方法。
(2)定义一个抽象类Employee类,该类继承People类,该类具有People类的所有成员,并新增雇员底薪薪水(salary)和职工编号(empid)成员变量。
同样要有至少两个构造方法,要体现出this和super的几种用法。
声明具有一个抽象的getSalary()方法,该方法返回float 值,用于返回员工薪水。
Java实验四-实验报告
Java实验四-实验报告实验四类和对象;类的继承和派生;多态性;接口;构造器应用一、实验目的1、掌握类与对象的关系;2、掌握类的定义;3、掌握对象的声明及使用;4、掌握构造方法的概念及调用时机;5、掌握构造方法的重载;6、掌握匿名对象的使用。
二、实验学时2学时三、实验类型验证性实验四、实验需求1、硬件每位学生配备计算机一台2、软件Windows 7操作系统,JDK,eclipse,MySQL 3、网络无4、工具无五、实验理论与预备知识1、类与对象的关系;2、类的定义;3、对象的声明及使用;4、构造方法的概念及调用时机;5、构造方法的重载;6、匿名对象的使用。
六、实验内容与结果1、编写一个应用程序,该程序中有3个类:Trangle、Leder和Circle,分别用来刻画“三角形”、“梯形”和“圆形”。
//三角形类class Trangle {double sidea,sideb,sidec,sjxzc,sjxmj;boolean boo;public Trangle(double a,double b,double c){sidea=a;sideb=b;sidec=c;if(a+b>c && a+c>b && b+c>a){boo=true;}else{boo=false;}}double getlength(){double length;length=sidea+sideb+sidec;return length;}public double getarea(){if(boo){double area;double p=(sidea+sideb+sidec)/2.0;area=Math.sqrt(p*(p-sidea)*(p-sideb)*(p-sidec)); return area;}else{System.out.println("不是一个三角形,不能计算面积"); return 0;}}}//梯形类class Laderdouble txsd,txxd,txhigh,txarea;Lader(double a,double b,double c){txsd=a;txxd=b;txhigh=c;}double getarea(){double area;area=(txsd+txxd)*txhigh/2.0; return area;}}//圆形类class Circle{double ybj,yzc,yarea;Circle(double r){ybj=r;}double getarea(){double area;area=3.14*ybj*ybj;return area;}double getlength(){double length;length=2*3.14*ybj;return length;}void setybj(double newybj) {ybj=newybj;}double getybj(){return ybj;}}public class one {public static void main (String args[]){double length,area;Circle circle=new Circle(5);Trangle trangle=new Trangle(3,4,5); Lader lader=new Lader(3,4,6);length=circle.getlength();System.out.println("圆的周长:"+length); area=circle.getarea();System.out.println("圆的面积:"+area); length=trangle.getlength();System.out.println("三角形的周长:"+length); area=trangle.getarea();System.out.println("三角形的面积:"+area); area=lader.getarea();System.out.println("梯形的面积:"+area); trangle=new Trangle(1,1,3);area=trangle.getarea();System.out.println("三角形的面积:"+area); length=trangle.getlength();System.out.println("三角形的周长:"+length); }}2、编写一个公司员工类。
java实验报告-
java实验报告-Java 实验报告一、实验目的本次 Java 实验的主要目的是通过实际编程操作,深入理解和掌握Java 语言的基本语法、面向对象编程的概念以及常用类库的使用方法。
同时,培养自己的编程思维和解决实际问题的能力。
二、实验环境操作系统:Windows 10开发工具:IntelliJ IDEAJDK 版本:18三、实验内容及步骤(一)实验题目 1:简单的 Java 程序设计1、题目描述编写一个 Java 程序,实现输出“Hello, World!”。
2、实验步骤(1)打开 IntelliJ IDEA 开发工具,创建一个新的 Java 项目。
(2)在项目中创建一个新的 Java 类,命名为“HelloWorld”。
(3)在“HelloWorld”类中编写以下代码:```javapublic class HelloWorld {public static void main(String args) {Systemoutprintln("Hello, World!");}}```(4)运行程序,查看控制台输出结果。
(二)实验题目 2:数据类型与变量1、题目描述定义不同数据类型的变量,并进行赋值和运算操作。
2、实验步骤(1)在同一个 Java 项目中创建一个新的 Java 类,命名为“DataTypeAndVariable”。
(2)在“DataTypeAndVariable”类中编写以下代码:```javapublic class DataTypeAndVariable {public static void main(String args) {int num1 = 10;int num2 = 20;int sum = num1 + num2;double price = 125;String name ="张三";boolean isTrue = true;Systemoutprintln("num1 + num2 ="+ sum);Systemoutprintln("价格:"+ price);Systemoutprintln("姓名:"+ name);Systemoutprintln("是否为真:"+ isTrue);}}```(3)运行程序,查看控制台输出结果。
Java实验报告4
(3)如果将B.java去掉import语句,并在使用包中的类时带上完整的路径,运行时结果正确。
(4)把A.java程序的相关部分作如下修改进行测试,编译运行。
System.out.println("从类A中访问Clock hour="+c.hour);
System.out.println("从类A中访问Clock minute="+c.minute);
System.out.println("从类A中访问Clock second="+c.second);
·ClassNotFoundException:具有指定名字的类或接口没有被发现。
·CloneNotSupportedException:克隆一个没有实现Cloneable接口的类。
·IllegalAccessException:试图用给出了完整的路径信息的字符串加载一个类,但是当前正在执行的方法无法访问指定类,因为该类不是public类型或在另一个包中。
int n,a;String x;
BufferedReader keyin=
new BufferedReader(new InputStreamReader(System.in));
System.out.print("Enter an integer");
x=keyin.readLine();
n=Integer.parseInt(x);
java实验报告总结[范本]
java实验报告总结[范本] Java实验报告总结一、实验目的本次Java实验旨在让我们更深入地理解Java语言的基础知识,包括数据类型、控制结构、数组和对象等,并提升我们的编程实践能力和问题解决能力。
二、实验内容本次实验主要涉及Java语言的基础知识,包括数据类型、控制结构、数组和对象等。
我们通过编写程序来解决一些实际问题,例如计算器的实现、排序算法的实现等。
三、实验过程1.实验准备在开始实验之前,我首先复习了Java语言的基础知识,包括数据类型、控制结构、数组和对象等,以确保我对这些知识点有清晰的理解。
然后,我查阅了相关的Java编程书籍和网上资源,了解了Java编程的基本规范和最佳实践。
2.实验实施根据实验要求,我首先编写了一个计算器程序,该程序可以执行加、减、乘、除等基本运算。
然后,我实现了一个冒泡排序算法,用于对一个整数数组进行排序。
在实现这些程序的过程中,我遇到了许多问题,例如程序出现编译错误、运行时异常等。
但是,通过查阅相关资料和请教同学,我逐渐解决了这些问题。
3.实验总结通过本次实验,我深入理解了Java语言的基础知识,掌握了Java编程的基本技能和方法。
同时,我也发现了自己在编程中存在的问题和不足之处,例如对Java语言特性的理解不够深入、编程规范不够严格等。
针对这些问题,我将在今后的学习和实践中加以改进。
四、实验心得1.深入理解Java语言特性是编写高质量Java程序的关键。
例如,在实现计算器程序时,我必须深入理解Java的运算符和表达式规范才能确保程序的正确性。
2.掌握Java编程规范是提高程序可读性和可维护性的重要途径。
例如,在实现排序算法时,我必须遵循Java编程规范中的命名规范和注释规范才能使程序更易于理解和维护。
3.良好的编程习惯是避免程序出现问题的关键。
例如,在实现程序时,我必须注意程序的异常处理和错误处理才能确保程序的稳定性和可靠性。
4.团队合作是提高编程效率和质量的重要手段。
java实验四实验报告
}
编译:javac TwoThread.java
解释执行:java TwoThread
运行后结果:
1、用创建Thread类的子类的方法实现多线程:
源程序:
class FruitThread extends Thread
{
public FruitThread (String str)
{
super(str);
}
public void run()
{
for(int i=0;i<5;i++)
{
System.out.println(i+""+getName());
T2.start();
}
}
编译:javac C.java
解释执行:java RunThread
运行后结果:
c源程序:
class run1Thread implements Runnable
{
public void run()
{
System.out.println("This is Runnable");
outputClass(String s){
name=s;
}
public void run(){
for(int i=0;i<3;i++){
System.out.println(name);
Thread.yield();
}
}
}
class runThreads{
public static void main(String args[]){
try
{
sleep((int)(Math.random()*1000));
java试验报告4
政法学院本科学生实验报告(四)姓名学院计算机科学学院专业计算机科学与技术班级实验课程名称 JAVA使用教程试验时间年月日指导教师及职称实验成绩开课时间学年 1 学期政法学院实验管理中心印制实验题目JAVA高级编程小组合作否○姓名班级学号一、实验目的:通过所学知识对JAVA高级编程进行编译并在集成环境中应用二、实验环境:装有eclipse3.4.1,jdk1.6的计算机一台三、实验内容及步骤1、补全程序并在eclipse3.4.1环境下运行结果(ChineseCharacters )源程序:import java.io.*;import java.util.StringTokenizer;public class ChineseCharacters{ public StringBuffer getChinesecharacters(File file){ StringBuffer hanzi=new StringBuffer();try{ FileReader inOne=【代码1】 //创建指向文件f的inOne 的对象BufferedReader inTwo=【代码2】 //创建指向文件inOne的inTwo 的对象String s=null;int i=0;while((s=【代码3】)!=null) //inTwo读取一行{ StringTokenizer tokenizer=new StringTokenizer(s," ,'\n' ");while(tokenizer.hasMoreTokens()){ hanzi.append(tokenizer.nextToken());}}}catch(Exception e) {}return hanzi;}}StudyFrame.javaimport java.awt.*;import java.awt.event.*;import java.io.*;import javax.sound.sampled.*;public class StudyFrame extends Frame implements ItemListener,ActionListener,Runnable { ChineseCharacters chinese;Choice choice;Button getCharacters,voiceCharacters;Label showCharacters;StringBuffer trainedChinese=null;Clip clip=null;Thread voiceThread;int k=0;Panel pCenter;CardLayout mycard;TextArea textHelp;MenuBar menubar;Menu menu;MenuItem help;public StudyFrame(){ chinese=new ChineseCharacters();choice=new Choice();choice.add("training1.txt");choice.add("training2.txt");choice.add("training3.txt");showCharacters=new Label("",Label.CENTER);showCharacters.setFont(new Font("宋体",Font.BOLD,72)); showCharacters.setBackground(Color.green);getCharacters=new Button("下一个汉字");voiceCharacters=new Button("发音");voiceThread=new Thread(this);choice.addItemListener(this);voiceCharacters.addActionListener(this);getCharacters.addActionListener(this);Panel pNorth=new Panel();pNorth.add(new Label("选择一个汉字字符组成的文件")); pNorth.add(choice);add(pNorth,BorderLayout.NORTH);Panel pSouth=new Panel();pSouth.add(getCharacters);pSouth.add(voiceCharacters);add(pSouth,BorderLayout.SOUTH);pCenter=new Panel();mycard=new CardLayout();pCenter.setLayout(mycard);textHelp=new TextArea();pCenter.add("hanzi",showCharacters);pCenter.add("help",textHelp);add(pCenter,BorderLayout.CENTER);menubar=new MenuBar();menu=new Menu("帮助");help=new MenuItem("关于学汉字");help.addActionListener(this);menu.add(help);menubar.add(menu);setMenuBar(menubar);setSize(350,220);setVisible(true);addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0);}});validate();}public void itemStateChanged(ItemEvent e){ String fileName=choice.getSelectedItem();File file=new File(fileName);trainedChinese=chinese.getChinesecharacters(file);k=0;mycard.show(pCenter,"hanzi") ;}public void actionPerformed(ActionEvent e){ if(e.getSource()==getCharacters){ if(trainedChinese!=null){ char c=trainedChinese.charAt(k);k++;if(k>=trainedChinese.length())k=0;showCharacters.setText(""+c);}else{ showCharacters.setText("请选择一个汉字字符文件");}}if(e.getSource()==voiceCharacters){ if(!(voiceThread.isAlive())){ voiceThread=new Thread(this);}try{ voiceThread.start();}catch(Exception exp){}}if(e.getSource()==help){ mycard.show(pCenter,"help") ;try{ File helpFile=new File("help.txt");FileReader inOne=【代码4】 //创建指向文件helpFile的inOne 的对象 BufferedReader inTwo=【代码5】 //创建指向文件inOne的inTwo 的对象 String s=null;while((s=inTwo.readLine())!=null){ textHelp.append(s+"\n");}inOne.close();inTwo.close();}catch(IOException exp){}}}public void run(){ voiceCharacters.setEnabled(false);try{ if(clip!=null){ clip.close()}clip=AudioSystem.getClip();File voiceFile=new File(showCharacters.getText().trim()+".wav");clip.open(AudioSystem.getAudioInputStream(voiceFile));}catch(Exception exp){}clip.start();voiceCharacters.setEnabled(true);}}StudyMainClass.javapublic class StudyMainClass{ public static void main(String args[]){ new StudyFrame();}}补全后的程序:package org.exercise1;import java.io.*;import java.util.StringTokenizer;public class ChineseCharacters{ public StringBuffer getChinesecharacters(File file){ StringBuffer hanzi=new StringBuffer();try{ FileReader inOne= new FileReader(file); //创建指向文件f的inOne 的对象BufferedReader inTwo=new BufferedReader(inOne);//创建指向文件inOne的inTwo 的对象String s=null;int i=0;while((s=inTwo.readLine())!=null) //inTwo读取一行{ StringTokenizer tokenizer=new StringTokenizer(s," ,'\n' ");while(tokenizer.hasMoreTokens()){ hanzi.append(tokenizer.nextToken());}}}catch(Exception e) {}return hanzi;}}package org.exercise1;import java.awt.*;import java.awt.event.*;import java.io.*;import javax.sound.sampled.*;public class StudyFrame extends Frame implements ItemListener,ActionListener,Runnable{ ChineseCharacters chinese;Choice choice;Button getCharacters,voiceCharacters;Label showCharacters;StringBuffer trainedChinese=null;Clip clip=null;Thread voiceThread;int k=0;Panel pCenter;CardLayout mycard;TextArea textHelp;MenuBar menubar;Menu menu;MenuItem help;public StudyFrame(){ chinese=new ChineseCharacters();choice=new Choice();choice.add("training1.txt");choice.add("training2.txt");choice.add("training3.txt");showCharacters=new Label("",Label.CENTER);showCharacters.setFont(new Font("宋体",Font.BOLD,72));showCharacters.setBackground(Color.green);getCharacters=new Button("下一个汉字");voiceCharacters=new Button("发音");voiceThread=new Thread(this);choice.addItemListener(this);voiceCharacters.addActionListener(this);getCharacters.addActionListener(this);Panel pNorth=new Panel();pNorth.add(new Label("选择一个汉字字符组成的文件"));pNorth.add(choice);add(pNorth,BorderLayout.NORTH);Panel pSouth=new Panel();pSouth.add(getCharacters);pSouth.add(voiceCharacters);add(pSouth,BorderLayout.SOUTH);pCenter=new Panel();mycard=new CardLayout();pCenter.setLayout(mycard);textHelp=new TextArea();pCenter.add("hanzi",showCharacters);pCenter.add("help",textHelp);add(pCenter,BorderLayout.CENTER);menubar=new MenuBar();menu=new Menu("帮助");help=new MenuItem("关于学汉字");help.addActionListener(this);menu.add(help);menubar.add(menu);setMenuBar(menubar);setSize(350,220);setVisible(true);addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0);}});validate();}public void itemStateChanged(ItemEvent e){ String fileName=choice.getSelectedItem();File file=new File(fileName);trainedChinese=chinese.getChinesecharacters(file);k=0;mycard.show(pCenter,"hanzi") ;}public void actionPerformed(ActionEvent e){ if(e.getSource()==getCharacters){ if(trainedChinese!=null){ char c=trainedChinese.charAt(k);k++;if(k>=trainedChinese.length())k=0;showCharacters.setText(""+c);}else{ showCharacters.setText("请选择一个汉字字符文件");}}if(e.getSource()==voiceCharacters){ if(!(voiceThread.isAlive())){ voiceThread=new Thread(this);}try{ voiceThread.start();}catch(Exception exp){}}if(e.getSource()==help){ mycard.show(pCenter,"help") ;try{ File helpFile=new File("help.txt");FileReader inOne=new FileReader(helpFile); //创建指向文件helpFile的inOne 的对象BufferedReader inTwo= new BufferedReader(inOne); //创建指向文件inOne的inTwo 的对象String s=null;while((s=inTwo.readLine())!=null){ textHelp.append(s+"\n");}inOne.close();inTwo.close();}catch(IOException exp){}}}public void run(){ voiceCharacters.setEnabled(false);try{ if(clip!=null){ clip.close();}clip=AudioSystem.getClip();File voiceFile=newFile(showCharacters.getText().trim()+".wav");clip.open(AudioSystem.getAudioInputStream(voiceFile));}catch(Exception exp){}clip.start();voiceCharacters.setEnabled(true);}}package org.exercise1;public class StudyMainClass{ public static void main(String args[]){ new StudyFrame();}}在eclipse3.4.1运行如下图所示2、补全程序并在eclipse3.4.1环境下运行结果(WordStatistic .java)import java.io.*;import java.util.Vector;public class WordStatistic{ Vector allWorsd,noSameWord;WordStatistic(){ allWorsd=new Vector();noSameWord=new Vector();}public void wordStatistic(File file){ try{ RandomAccessFile inOne=【代码1】 //创建指向文件file的inOne 的对象 RandomAccessFile inTwo=【代码2】 //创建指向文件file的inTwo 的对象 long wordStarPostion=0,wordEndPostion=0;long length=inOne.length();int flag=1;int c=-1;for(int k=0;k<=length;k++){ c=【代码3】 // inOne调用read()方法boolean boo=(c<='Z'&&c>='A')||(c<='z'&&c>='a');if(boo){ if(flag==1){ wordStarPostion=inOne.getFilePointer()-1;flag=0;}}else{ if(flag==0){if(c==-1)wordEndPostion=inOne.getFilePointer();elsewordEndPostion=inOne.getFilePointer()-1;【代码4】// inTwo调用seek方法将读写位置移动到wordStarPostion byte cc[]=new byte[(int)wordEndPostion-(int)wordStarPostion];【代码5】// inTwo调用readFully(byte a)方法,向a传递ccString word=new String(cc);allWorsd.add(word);if(!(noSameWord.contains(word)))noSameWord.add(word);}flag=1;}}inOne.close();inTwo.close();}catch(Exception e){}}public Vector getAllWorsd(){ return allWorsd;}public Vector getNoSameWord(){ return noSameWord;}}RandomExample.javaimport java.awt.*;import java.awt.event.*;import java.util.Vector;import java.io.File;public class StatisticFrame extends Frame implements ActionListener{ WordStatistic statistic;TextArea showMessage;Button openFile;FileDialog openFileDialog;Vector allWord,noSameWord;public StatisticFrame(){ statistic=new WordStatistic();showMessage=new TextArea();openFile=new Button("Open File");openFile.addActionListener(this);add(openFile,BorderLayout.NORTH);add(showMessage,BorderLayout.CENTER);openFileDialog=new FileDialog(this,"打开文件话框",FileDialog.LOAD);allWord=new Vector();noSameWord=new Vector();setSize(350,300);setVisible(true);addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0);}});validate();}public void actionPerformed(ActionEvent e){ noSameWord.clear();allWord.clear();showMessage.setText(null);openFileDialog.setVisible(true);String fileName=openFileDialog.getFile();if(fileName!=null){ statistic.wordStatistic(new File(fileName));allWord=statistic.getAllWorsd();noSameWord=statistic.getNoSameWord();showMessage.append("\n"+fileName+"中有"+allWord.size()+"个英文单词");showMessage.append("\n其中有"+noSameWord.size()+"个互不相同英文单词");showMessage.append("\n按使用频率排列:\n");int count[]=new int[noSameWord.size()];for(int i=0;i<noSameWord.size();i++){ String s1=(String)noSameWord.elementAt(i);for(int j=0;j<allWord.size();j++){ String s2=(String)allWord.elementAt(j);if(s1.equals(s2))count[i]++;}}for(int m=0;m<noSameWord.size();m++){ for(int n=m+1;n<noSameWord.size();n++){ if(count[n]>count[m]){ String temp=(String)noSameWord.elementAt(m);noSameWord.setElementAt((String)noSameWord.elementAt(n),m);noSameWord.setElementAt(temp,n);int t=count[m];count[m]=count[n];count[n]=t;}}}for(int m=0;m<noSameWord.size();m++){ showMessage.append("\n"+(String)noSameWord.elementAt(m)+":"+count[m]+"/"+allWord.size()+"="+(1.0*count[m])/allWord.size());}}}}RandomExample.javapublic class StatisticMainClass{ public static void main(String args[]){ new StatisticFrame();}}}补全后程序:import java.io.*;import java.util.Vector;public class WordStatistic{ Vector allWorsd,noSameWord;WordStatistic(){ allWorsd=new Vector();noSameWord=new Vector();}public void wordStatistic(File file){ try{ RandomAccessFile inOne=new RandomAccessFile(file,"rw"); //创建指向文件file的inOne 的对象RandomAccessFile inTwo= new RandomAccessFile(file,"rw"); //创建指向文件file的inTwo 的对象long wordStarPostion=0,wordEndPostion=0;long length=inOne.length();int flag=1;int c=-1;for(int k=0;k<=length;k++){ c=inOne.read(); // inOne调用read()方法boolean boo=(c<='Z'&&c>='A')||(c<='z'&&c>='a');if(boo){ if(flag==1){ wordStarPostion=inOne.getFilePointer()-1;flag=0;}}else{ if(flag==0){if(c==-1)wordEndPostion=inOne.getFilePointer();elsewordEndPostion=inOne.getFilePointer()-1;inTwo.seek(wordStarPostion);// inTwo调用seek方法将读写位置移动到wordStarPostionbyte cc[]=new byte[(int)wordEndPostion-(int)wordStarPostion];inTwo.readFully(cc); // inTwo调用readFully(byte a)方法,向a传递cc String word=new String(cc);allWorsd.add(word);if(!(noSameWord.contains(word)))noSameWord.add(word);}flag=1;}}inOne.close();inTwo.close();}catch(Exception e){}}public Vector getAllWorsd(){ return allWorsd;}public Vector getNoSameWord(){ return noSameWord;}}RandomExample.javaimport java.awt.*;import java.awt.event.*;import java.util.Vector;import java.io.File;public class StatisticFrame extends Frame implements ActionListener{ WordStatistic statistic;TextArea showMessage;Button openFile;FileDialog openFileDialog;Vector allWord,noSameWord;public StatisticFrame(){ statistic=new WordStatistic();showMessage=new TextArea();openFile=new Button("Open File");openFile.addActionListener(this);add(openFile,BorderLayout.NORTH);add(showMessage,BorderLayout.CENTER);openFileDialog=new FileDialog(this,"打开文件话框",FileDialog.LOAD);allWord=new Vector();noSameWord=new Vector();setSize(350,300);setVisible(true);addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0);}});validate();}public void actionPerformed(ActionEvent e){ noSameWord.clear();allWord.clear();showMessage.setText(null);openFileDialog.setVisible(true);String fileName=openFileDialog.getFile();if(fileName!=null){ statistic.wordStatistic(new File(fileName));allWord=statistic.getAllWorsd();noSameWord=statistic.getNoSameWord();showMessage.append("\n"+fileName+"中有"+allWord.size()+"个英文单词"); showMessage.append("\n其中有"+noSameWord.size()+"个互不相同英文单词"); showMessage.append("\n按使用频率排列:\n");int count[]=new int[noSameWord.size()];for(int i=0;i<noSameWord.size();i++){ String s1=(String)noSameWord.elementAt(i);for(int j=0;j<allWord.size();j++){ String s2=(String)allWord.elementAt(j);if(s1.equals(s2))count[i]++;}}for(int m=0;m<noSameWord.size();m++){ for(int n=m+1;n<noSameWord.size();n++){ if(count[n]>count[m]){ String temp=(String)noSameWord.elementAt(m);noSameWord.setElementAt((String)noSameWord.elementAt(n),m);noSameWord.setElementAt(temp,n);int t=count[m];count[m]=count[n];count[n]=t;}}}for(int m=0;m<noSameWord.size();m++){ showMessage.append("\n"+(String)noSameWord.elementAt(m)+":"+count[m]+"/"+allWord.size()+"="+(1.0*count[m])/allWord.size());}}}}RandomExample.javapublic class StatisticMainClass{ public static void main(String args[]){ new StatisticFrame();}}在eclipse3.4.1运行如下图所示3、补全程序并在eclipse3.4.1环境下运行结果(1)(JLayeredPane分层窗格)源程序import javax.swing.*;import java.awt.*;class LayerExample{ public static void main(String args[]){ JFrame win=new JFrame("窗体");win.setBounds(100,100,300,300);win.setVisible(true);JButton b1=new JButton("我在DEFAULT_LAYER"),b2=new JButton("我在PALETTE_LAYER"),b3 =new JButton("我在MODAL_LAYER"),b4 =new JButton("我在POPUP_LAYER"),b5=new JButton("我在DRAG_LAYER");Container contenetPane=win.getContentPane();JLayeredPane pane= new JLayeredPane();pane.setLayout(null);【代码1】 //pane将组件b5放置在DRAG_LAYER层【代码2】 //pane将组件b4放置在POPUP_LAYER层【代码3】 //pane将组件b3放置在MODAL_LAYER层【代码4】 //pane将组件b2放置在PALETTE_LAYER层【代码5】 //pane将组件b3放置在DEFAULT_LAYER层 b5.setBounds(50,50,200,100);b4.setBounds(40,40,200,100);b3.setBounds(30,30,200,100);b2.setBounds(20,20,200,100);b1.setBounds(10,10,200,100);b1.setBackground(Color.red);b2.setBackground(Color.pink);b3.setBackground(Color.green);b4.setBackground(Color.orange);b5.setBackground(Color.yellow);contenetPane.add(pane,BorderLayout.CENTER);contenetPane.validate();win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}}补全后程序:package org.exercise2;import javax.swing.*;import java.awt.*;class LayerExample{ public static void main(String args[]){ JFrame win=new JFrame("窗体");win.setBounds(100,100,300,300);win.setVisible(true);JButton b1=new JButton("我在DEFAULT_LAYER"),b2=new JButton("我在PALETTE_LAYER"),b3 =new JButton("我在MODAL_LAYER"),b4 =new JButton("我在POPUP_LAYER"),b5=new JButton("我在DRAG_LAYER");Container contenetPane=win.getContentPane();JLayeredPane pane= new JLayeredPane();pane.setLayout(null);pane.add(b5,JLayeredPane.DRAG_LAYER); //pane将组件b5放置在DRAG_LAYER 层pane.add(b4,JLayeredPane.POPUP_LAYER); //pane将组件b4放置在POPUP_LAYER层pane.add(b3,JLayeredPane.MODAL_LAYER); //pane将组件b3放置在MODAL_LAYER层pane.add(b2,JLayeredPane.PALETTE_LAYER); //pane将组件b2放置在PALETTE_LAYER层pane.add(b1,JLayeredPane.DEFAULT_LAYER); //pane将组件b3放置在DEFAULT_LAYER层b5.setBounds(50,50,200,100);b4.setBounds(40,40,200,100);b3.setBounds(30,30,200,100);b2.setBounds(20,20,200,100);b1.setBounds(10,10,200,100);b1.setBackground(Color.red);b2.setBackground(Color.pink);b3.setBackground(Color.green);b4.setBackground(Color.orange);b5.setBackground(Color.yellow);contenetPane.add(pane,BorderLayout.CENTER);contenetPane.validate();win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}}在eclipse3.4.1运行如下图所示4、补全程序并在eclipse3.4.1环境下运行结果(CalendarBean)源代码:import java.util.Calendar;public class CalendarBean{ int year=2005,month=0,nextDay;public void setYear(int year){ this.year=year;}public int getYear(){ return year;}public void setMonth(int month){ this.month=month;}public int getMonth(){ return month;}public String[][] getCalendar(){ String a[][]=new String[6][7];Calendar 日历=Calendar.getInstance();日历.set(year,month-1,1);int 星期几=日历.get(Calendar.DAY_OF_WEEK)-1;int day=0;if(month==1||month==3||month==5||month==7||month==8||month==10||month==12) { day=31;}if(month==4||month==6||month==9||month==11){ day=30;}if(month==2){ if(((year%4==0)&&(year%100!=0))||(year%400==0)){ day=29;}else{ day=28;}}nextDay=1;for(int k=0;k<6;k++){ if(k==0)for(int j=星期几;j<7;j++){ a[k][j]=" "+nextDay ;nextDay++;}elsefor(int j=0;j<7&&nextDay<=day;j++){ a[k][j]=""+nextDay ;nextDay++;}}return a;}}//CalenderFrame.javaimport javax.swing.*;import java.awt.*;import java.awt.event.*;public class CalenderFrame extends JFrame implements ActionListener{ JTable table;Object name[]={"星期日","星期一","星期二","星期三", "星期四","星期五","星期六"};JButton nextMonth,previousMonth;int year=2006,month=5;CalendarBean calendar;String rili[][];JLabel showMessage=new JLabel("",JLabel.CENTER);JScrollPane scroll;public CalenderFrame(){ calendar=new CalendarBean();calendar.setYear(year);calendar.setMonth(month);rili=calendar.getCalendar();【代码1】 //使用数组rili和name创建tabletable.setRowSelectionAllowed(false);nextMonth=new JButton("下月");previousMonth=new JButton("上月");nextMonth.addActionListener(this);previousMonth.addActionListener(this);JPanel pNorth=new JPanel(),pSouth=new JPanel();pNorth.add(previousMonth);pNorth.add(nextMonth);pSouth.add(showMessage);showMessage.setText("日历:"+calendar.getYear()+"年"+calendar.getMonth()+"月" );scroll=new JScrollPane(table);add(scroll,BorderLayout.CENTER);add(pNorth,BorderLayout.NORTH);add(pSouth,BorderLayout.SOUTH);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setBounds(100,100,400,240);setVisible(true);validate();}public void actionPerformed(ActionEvent e){ if(e.getSource()==nextMonth){ month=month+1;if(month>12)month=1;calendar.setMonth(month);rili=calendar.getCalendar();remove(scroll);【代码2】 //使用数组rili和name创建tabletable.setRowSelectionAllowed(false);scroll=new JScrollPane(table);add(scroll,BorderLayout.CENTER);}else if(e.getSource()==previousMonth){ month=month-1;if(month<1)month=12;calendar.setMonth(month);rili=calendar.getCalendar();remove(scroll);【代码3】 //使用数组rili和name创建tabletable.setRowSelectionAllowed(false);scroll=new JScrollPane(table);add(scroll,BorderLayout.CENTER);}showMessage.setText("日历:"+calendar.getYear()+"年"+calendar.getMonth()+"月" );}}//CalendarMainClass.javapublic class CalendarMainClass{ public static void main(String args[]){ new CalenderFrame();}}补全后程序:package org.exercise2;import java.util.Calendar;public class CalendarBean{ int year=2005,month=0,nextDay;public void setYear(int year){ this.year=year;}public int getYear(){ return year;}public void setMonth(int month){ this.month=month;}public int getMonth(){ return month;}public String[][] getCalendar(){ String a[][]=new String[6][7];Calendar 日历=Calendar.getInstance();日历.set(year,month-1,1);int星期几=日历.get(Calendar.DAY_OF_WEEK)-1;int day=0;if(month==1||month==3||month==5||month==7||month==8||month==10||month== 12){ day=31;}if(month==4||month==6||month==9||month==11){ day=30;}if(month==2){ if(((year%4==0)&&(year%100!=0))||(year%400==0)){ day=29;}else{ day=28;}}nextDay=1;for(int k=0;k<6;k++){ if(k==0)for(int j=星期几;j<7;j++){ a[k][j]=" "+nextDay ;nextDay++;}elsefor(int j=0;j<7&&nextDay<=day;j++){ a[k][j]=""+nextDay ;nextDay++;}}return a;}}package org.exercise2;import javax.swing.*;import java.awt.*;import java.awt.event.*;public class CalenderFrame extends JFrame implements ActionListener{ JTable table;Object name[]={"星期日","星期一","星期二","星期三", "星期四","星期五","星期六"};JButton nextMonth,previousMonth;int year=2006,month=5;CalendarBean calendar;String rili[][];JLabel showMessage=new JLabel("",JLabel.CENTER);JScrollPane scroll;public CalenderFrame(){ calendar=new CalendarBean();calendar.setYear(year);calendar.setMonth(month);rili=calendar.getCalendar();table=new JTable(rili,name); //使用数组rili和name创建tabletable.setRowSelectionAllowed(false);nextMonth=new JButton("下月");previousMonth=new JButton("上月");nextMonth.addActionListener(this);previousMonth.addActionListener(this);JPanel pNorth=new JPanel(),pSouth=new JPanel();pNorth.add(previousMonth);pNorth.add(nextMonth);pSouth.add(showMessage);showMessage.setText("日历:"+calendar.getYear()+"年"+calendar.getMonth()+"月" );scroll=new JScrollPane(table);add(scroll,BorderLayout.CENTER);add(pNorth,BorderLayout.NORTH);add(pSouth,BorderLayout.SOUTH);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setBounds(100,100,400,240);setVisible(true);validate();}public void actionPerformed(ActionEvent e){ if(e.getSource()==nextMonth){ month=month+1;if(month>12)month=1;calendar.setMonth(month);rili=calendar.getCalendar();remove(scroll);table=new JTable(rili,name); //使用数组rili和name创建table table.setRowSelectionAllowed(false);scroll=new JScrollPane(table);add(scroll,BorderLayout.CENTER);}else if(e.getSource()==previousMonth){ month=month-1;if(month<1)month=12;calendar.setMonth(month);rili=calendar.getCalendar();remove(scroll);table=new JTable(rili,name); //使用数组rili和name创建table table.setRowSelectionAllowed(false);scroll=new JScrollPane(table);add(scroll,BorderLayout.CENTER);}showMessage.setText("日历:"+calendar.getYear()+"年"+calendar.getMonth()+"月" );}}package org.exercise2;public class CalendarMainClass{ public static void main(String args[]){ new CalenderFrame();}}在eclipse3.4.1运行如下图所示4、补全程序并在eclipse3.4.1环境下运行结果(MDIExample)源程序:import javax.swing.*;import javax.swing.event.*;import java.awt.*;import java.awt.event.*;class MyInternalFrame extends JInternalFrame{ JTextArea text;MyInternalFrame(String title){ super(title,true,true,true,true);text=new JTextArea();Container con=getContentPane();con.add(new JScrollPane(text),BorderLayout.CENTER);setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);addInternalFrameListener(new InternalFrameAdapter (){ public void internalFrameActivated(InternalFrameEvent e){ setLayer(JDesktopPane.DRAG_LAYER);}public void internalFrameDeactivated(InternalFrameEvent e) { setLayer(JDesktopPane.DEFAULT_LAYER);}});}public JTextArea getJTextArea(){ return text;}}class Mywindow extends JFrame implements ActionListener{ JDesktopPane desk;JMenuBar menubar;JMenu menu;JMenuItem itemNew,itemCopy,itemCut,itemPaste;Container con;Mywindow(){ setSize(360,360);setVisible(true);con=getContentPane();desk=【代码1】 //创建JdesktopPane对象。
天津理工大学Java实验四实验报告
天津理⼯⼤学Java实验四实验报告天津理⼯⼤学计算机科学与⼯程学院实验报告2017 ⾄2018 学年第⼀学期附录(源程序清单)// FullQueueException类package Ex;public class FullQueueException extends IndexOutOfBoundsException { private static final long serialVersionUID = 1L;String ERROR_INFO;FullQueueException(String s){this.ERROR_INFO = new String(s);}public String toString(){return "FullQueueException" + ERROR_INFO;}}// EmptyQueueException类String ERROR_INFO; EmptyQueueException(String s){this.ERROR_INFO = new String(s);}public String toString(){return "EmptyQueueException" + ERROR_INFO; }}// CircleQueue类import java.util.Arrays;public class CircleQueue{private int DEFAULT_SIZE = 5;private int capacity;private Object[] elementData;private int front = 0;private int rear = 0;public CircleQueue(){capacity = DEFAULT_SIZE;elementData = new Object[capacity];}public CircleQueue(T element){this();elementData[0] = element;rear++;}public CircleQueue(T element, int initSize){this.capacity = initSize;elementData = new Object[capacity];rear++;}public int size(){if (isEmpty()){return 0;}return rear > front ? rear - front : capacity - (front - rear);}public void addBack(T element) throws FullQueueException { if (rear == front && elementData[front] != null){throw new FullQueueException("队列已满的异常");}elementData[rear++] = element;rear = rear == capacity ? 0 : rear;}public T removeFront() throws EmptyQueueException{if (isEmpty()){throw new EmptyQueueException("空队列异常");T oldValue = (T) elementData[front];elementData[front++] = null;front = front == capacity ? 0 : front;return oldValue;}public T element() throws EmptyQueueException{if (isEmpty()) {throw new EmptyQueueException("空队列异常");}public boolean isEmpty(){// rear==front且rear处的元素为nullreturn rear == front && elementData[rear] == null; }public void clear(){Arrays.fill(elementData, null);front = 0;rear = 0;}}// PrintJob类public class PrintJob{private String jobName;private int pages;public PrintJob(String sjN, int spg){this.jobName = new String(sjN);this.pages = spg;}public String getName(){return this.jobName;}public int getPages(){return this.pages;}}import java.util.Queue;private int sizeOfJobs;private int numberOfJobs;private int delayBetweenJobs;private String producerName;private Thread PrintThread = null;public Producer(int ss, int sn, int sd, String spn, Thread t) {this.sizeOfJobs = ss;this.numberOfJobs = sn;this.delayBetweenJobs = sd;this.producerName = new String(spn);this.PrintThread = t;}public void run() {for (int i = 0; i < this.numberOfJobs; i++) {PrintJob pj = new PrintJob(this.producerName + " #" + i, this.sizeOfJobs); try {Printer.getInstance().addJob(pj);Thread.sleep(this.delayBetweenJobs);} catch (InterruptedException e) {e.printStackTrace();} catch (FullQueueException e) {System.out.println("⽆法添加打印任务启动Printer" + e);}}}}//Printer类public class Printer implements Runnable{static private CircleQueue printQueue = new CircleQueue();static private boolean stateIsRunning = true;private static final Printer PRNTR_ONL Y = new Printer();static private boolean whileend = false;public static Printer getInstance() {return PRNTR_ONL Y;}public synchronized void halt(){if (Printer.stateIsRunning) {System.out.println("C: Print manager is halted.");Printer.stateIsRunning = false;}}public void addJob(PrintJob job) throws FullQueueException, InterruptedException { synchronized (printQueue){try{this.printQueue.addBack(job);}catch (FullQueueException e){try{printQueue.notify();printQueue.wait();}catch (InterruptedException e1){e1.printStackTrace();}}}System.out.println("[1]P: Adding job " + job.getName() + " to the queue");}private PrintJob getJob() throws EmptyQueueException {PrintJob p = null;while (p == null && stateIsRunning) {try {p = this.printQueue.element();Printer.printQueue.removeFront();} catch (EmptyQueueException e) {try {printQueue.notifyAll();printQueue.wait(500);} catch (InterruptedException e1) {e1.printStackTrace();}System.out.println("C: Waiting on a job to print." + stateIsRunning);}}return p;}}public void run() {System.out.println("C: Print manager is starting up.");while (stateIsRunning) {PrintJob pjob = null;try {pjob = this.getJob();System.out.println("[2]C:Starting job " + pjob.getName()); Thread.sleep(500 * pjob.getPages());System.out.println("[3]C:Completed job " + pjob.getName());} catch (EmptyQueueException e) {break;} catch (InterruptedException e) {e.printStackTrace();}}}//TestPrinter类public class TestPrinter{public static void main(String[] args) {Printer PRNT_P = Printer.getInstance();Thread THRD_P = new Thread(PRNT_P);THRD_P.setPriority(10);Producer pd1 = new Producer(5, 2, 5, "A", THRD_P); Producer pd2 = new Producer(5, 2, 5, "B", THRD_P); Producer pd3 = new Producer(5, 3, 5, "C", THRD_P); Thread thrd_A = new Thread(pd1);Thread thrd_B = new Thread(pd2);Thread thrd_C = new Thread(pd3);thrd_A.start();thrd_B.start();thrd_C.start();THRD_P.start();try {thrd_A.join();thrd_B.join();thrd_C.join();计算机科学与⼯程系}catch (InterruptedException e1){e1.printStackTrace();}try{Thread.sleep(10000);}catch (InterruptedException e){e.printStackTrace();PRNT_P.halt(); }}。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验报告_实验4 常用类(学生学号_姓名) 一、实验目的
1.掌握String类的基本构造方法和常用方法的使用;
2.熟悉StringBuffer类的追加、插入、查找、替换、删除等操作;
3.熟悉Math类常量及常用方法的调用;
4.熟悉包装类的功能、重要属性、主要构造器和常用方法;
5.了解StringTokenizer类的一般使用。
二、实验内容与步骤
1、(基础题)运行下列程序,并回答问题:
(1) 对于String对象来说,“==”运算符与equals( )方法的功能有什么不同?
“==”运算符比较两个字符串引用是否指向同一个对象。
equals( )方法在于比较两个字符串的内容是否完全相同。
(2) s1和s2是否指向同一对象?为什么?
是,因为s1和s2是字符串常量,如果用户创建了一个字符串常量,系统首先会在字符串池中查找有无相同内容的字符串存在,若有就把原有取出使用,若无则重新生成,故s1和s2指向同一对象。
(3) s3和s4是否指向同一对象?为什么?
不是,用构造器生成的字符串对象,它会在堆中生成一个对象,很明显s3和s4指向了不同的对象。
(4) s1==s3是否成立?为什么?
不成立,“==”运算符比较两个字符串引用是否指向同一个对象。
很明显s1和s3指向了不同的对象。
(5) s1、s2、s3、s4的内容是否相同?
是
(6) compareTo( )方法的功能是什么?当比较结果分别为负数、正数、0 时,代表什么含义?
pareTo(Str2);
其返回的是一个int类型值。
若Str1等于参数字符串Str2字符串,则返回0;若该Str1按字典顺序小于参数字符串Str2,则返回值小于0;若Str1按字典顺序大于参数字符串Str2,则返回值大于0。
2、(基础题)根据程序注释,将所缺代码补充完整,然后运行程序:
程序所缺代码:
String str = new String("*****************.cn");
System.out.println("字符串的长度: " + str.length()); // 输出字符串的长度
System.out.println("字符串的首字符: " + str.charAt(0));// 输出字符串的首字符
System.out.println("字符\'@\'的索引号(即下标): " + str.indexOf('@'));
System.out.println("该邮箱的顶级域名(即最后一个单词): " + str.substring(stIndexOf('.')+1));
System.out.println("字符串全部以大写方式输出为: " + str. toUpperCase());
3、(基础题)根据程序注释,将所缺代码补充完整,再运行程序::
程序所缺代码
StringBuffer sb= new StringBuffer(“里约热内卢奥运会举行时间:”);
sb.append(“8月8日晚8点”); // 在sb尾部追加"8月8日晚8点"字符串
sb.insert(sb.length()-1,” 8月5日-21日”); //在sb尾部追加"8月5日-21日"字符串
sb.replace(n, n+5,"第31届"); // 将字符串中"里约热内卢"替换为"第31届"
System.out.println("字符串的长度为: "+ sb.length());// 输出字符串的长度
sb.delete(12,25); // 删除字符串中从第12个字符开始到第25个字符为止的内容。