JAVA实验报告心得

时间:2019-05-12 15:20:36下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《JAVA实验报告心得》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《JAVA实验报告心得》。

第一篇:JAVA实验报告心得

北京联合大学 信息学院

“面向对象程序设计”课

程上机实验报告

题 目: java上机实验心得体会

姓名(学号):专 业: 计算机科学与技术

编 制 时 间: 2012年12月19日

版 本: 1.0.0 指 导 教 师:北京联合大学-信息学院编制

实验1 熟悉java运行环境

实验目的:熟悉jdk环境和操作,编写简单的java应用程序。

心得体会:在该实验中,我碰到的问题是jdk环境变量的设置。解决方法是通过查阅资料书和网上搜索相关解决方法及同学的有力帮助。

实验2 选择语句练习

实验目的:正确理解并能够熟练操作和使用java的if和switch语句。

心得体会:我个人感觉有了c的编程基础,if和switch这些简单的流程控制语句运用起来比较轻松,实现简单的逻辑运算也跟c非常相近,所以上手比较快。但是在这次程序中,首次涉及到了java程序的数据输入,与c区别很大。但经过老师的讲解和查阅相关资料,基本明白相关的使用规则和注意事项。在第二个小题中还涉及到了charat()方法,经查阅jdk文档,知道charat()方法返回一个位于提供给它的参数索引处的字符,如: str.chatat(0)检索str中的第一个字符,str.charat(str.length()-1)检索最后一个字符。我运用此方法解决了比较字符串间首字母异同的问题。

实验3 迭代练习

实验4 方法的实现练习

实验目的:声明、定义和调用方法,理解实参和形参的含义。

心得体会:在该实验中,我掌握如何写方法、调用方法,并掌握如何向方法中传递信息和从方法中返回信息。方法声明为非void(构造方法除外)则需要用return语句返回一个相应类型的返回值。

实验5 简单类型数组练习

实验目的:学习创建简单类型的数组,并能用循环语句处理数组。

心得体会:通过该实验,我学会了如何让建立简单类型的数组,并掌握了将数组作为方法的传入参数和返回值。在该实验中,遇到的问题主要是如何将一个连续的多位数在存入数组时,每个数组元素只对应改多位数的一个组成数。我解决的方法如下: for(i=0;i<6;i++){ n[i] = aa%10;//aa%10的结果是aa的末尾数,将多位数aa的末尾数赋给a[i] aa =(int)aa/10;//对aa/10的结果强制取整,去掉了aa的末尾数,以便对下一位数的存数。} 实验6 类和对象的练习

实验目的:正确理解并能够熟练操作和使用java的类、对象和方法。心得体会:我学会了如何建立类和对象,分别输出其中包含的成员值;以及分别引用各方法,实现不同的操作。在该程序中,我进一步了解了如何定义成员方法和成员属性以及相关方法的调用。特别是我掌握了利用构造方法对成员属性赋初始值。值得一提的是,我在相应的程序中运用了touppercase方法,经查看jdk文档知道该方法的作用是返回一个所有字母都被转化为大写字母字符串。

实验7 类的实现 实验目的:使用统一建模语言(uml)设计类,并实现类。

心得体会:通过该实验,我学会了使用public、private控制访问及其访问权限;体会了static关键字的作用。并对java程序中的类及面向对象的编程思想有了更进一步的了解。

实验8 继承的练习

实验目的:正确理解并能够熟练操作和使用java类的继承关系。

心得体会:理解了继承的含义,并使用uml符号设计了继承结构;掌握了用java实现继承关系;学会了区分方法重写和方法重载;并深入理解了abstract 和 final修饰符的作用。用final标记的变量只能赋值一次,标记的类不可被继承,方法不可被子类重写。用关键字extends表继承,例如子类a继承了父类b则可写作 class a extends b。在这些概念性知识点弄明白后,在解决实际问题时,碰到了输入年月日计算车龄的问题,我的解决办法如下: public int age(int year){ int age;int a1 =(int)(time/10000);//(int)time/10000是将8位数表示的生产年月日强制转换成四位数表示的年 } int a2 =(int)(year/10000);//将当前年月日转换为年 age = a2-a1 +1;//计算车龄 return age;实验9 抽象类、接口练习

实验目的:综合运用接口,类的知识。

心得体会:在该实验中,我掌握了接口定义,以及类实现接口。接口用interface关键字定义,在接口中,可以用abstract是修饰方法的,也可以去掉abstract,编译时会默认为抽象方法。类实现接口可用implements表示,例如class circle implements shape表示,circle类实现了接口shape。

实验10 多态练习

实验目的:理解并使用面向对象的特征:多态。

心得体会:在实验10中,我基本掌握了多态的句柄、多态方法的定义。在改程序中,我遇到了要求随机产生一个图形的难题,通过网上查阅资料,利用系统函数math.random()经一系列的运算处理来随机产生一个图形解决了该难题,具体的程序如下: public static void main(string[] args){ } circle cir = new circle(9);square squ = new square(4);shape shape;int r;r =(int)(math.random()*2);//用math.random()方法产生0.00到if(r == 0)shape = cir;else shape = squ;shape.testshape(shape);//同一条语句产生不同的执行结果,多态1.00的随机数,乘2取整后非0即1 性。

实验11 多线程处理

实验目的:理解线程的基本概念。

心得体会:通过该实验,基本能够理解线程的运行了。学会调用thread类中的系统函数以及掌握这些函数的作用是难点,setname()是设置线程名字,start()是开辟一条新线程,thread.currentthread().getname()是获得正在执行的线程的名字,thread.currentthread().getid()是thread类中返回该线程的标识符的方法,thread.currentthread().getpriority()是thread类中返回线程的优先级的方法。

实验12 i/o及文件处理

实验目的:掌握并使用java中的i/o和文件。

心得体会:对于该实验,由于比较难,只是基本掌握了文件读写的方法和规则,还有待17周java实训时继续攻坚克难。

结语:在这一系列的实验中,我基本掌握了java的编程规则、知识要点和一些小技巧,特别是对面向对象的编程思想和风格有了进一步的认识和体会。同时,因正确的编出程序而带来的成就感让我对编程更加感兴趣。对于在这些实验过程中,请教老师、同学互助、查阅资料等基本的学习方式,使我更加领悟到集体和团队的力量,也树立了敢于攻坚的信心。篇二:java实训心得 java实训心得

在上学期的最后一周和本学期的第一周,我和同组的学员在学校机房进行了java暑期实训,现在已经结束了。

回首上学期的java学习,重点还是在学习概念等一些常识性的东西,application应用程序和applet小程序,它的开发工具、数据类型、变量、接口、输入输出流等。学会分析异常,抛出异常,后期主要是小程序运用,gui界面设计和事件。我觉得这两种程序结构有很大的不同,不管是体系结构还是运行方式,都有很大的区别,而我主要偏向于小程序的学习。因为我感觉它实用性比较大,可以做出很多不错的游戏、运用程序等,而且它比较灵活。当然学知识不能仅凭自己的爱好和一时兴趣,要一步一个脚印、认认真真、踏踏实实,理论与实践相结合。在掌握课本实例和内容之后,要有一定的扩展阅读和课外学习,充分全面的了解java的应用和扩展运用。在我所学的语言当中,我自认为java是一门比较强大的面向对象编程语言。不仅仅因为它的跨平台性,更多的是因为它的灵活多变和实用性,而且它比较的经典和强悍。

这次实训,面对老师布置的任务,一开始有些慌张和无措。不过,事后我首先想到这和课本上的某些知识具有结合点,回忆和分析了老师教过的算法和具体实施方法,并综合考虑了其他的方面。在编写时,一个小小的符号、一个常量变量的设定,这都无不考量着我的细心和严谨。所以学习java,不仅对我们以后学习其他语言有很大的好处,而且也让我们知道了和理解了作为一个编程人员首先应具有的良好心理素质,那就是冷静思考和专心致志。

在此次实训中,我意识到一个好的编程人员要善于沟通和团结拼搏。实训结束后,我觉得要学好一门计算机语言必须牢记以下几点: 1.态度第一 2.兴趣是关键 3.敢于挑战 4.不懈追求

实训结束了,大家都有一种解脱的感觉。当然我想自己更多的是兴奋和一点点的成就感。现在我觉得,学习java要不断的复习和运用,做到举一反三,将所学知识充分融入到平时的学习生活中去,从而为以后的工作打好坚实的基础。感谢学校和老师能够为我们提供这次机会,让我们更好的掌握和了解java这门语言。

通过这次实训,我真的从中学到了很多东西。我对这个介于人类与非人类之间的计算机编程语言有了较上学期更进一步的认识。其间开心过、郁闷过、无奈过、彷徨过„„随着实训的圆满成功与实验报告的顺利完成,有点微微的自豪感使人难忘。至于我做的程序,还不是很完善,所以我将一直去完善它,不断地学习下去。伴随着学习的深入,我发现高深的东西还有很多很多,等待着我自己去发掘。对于java语言,我会更加努力。2011/9/10篇三:java实验报告 java程序设计实验报告

题目: 研究java中的for循环

院(系)

专 业 信息与计算科学

班 级 101001班

姓 名 学 号 101001113 导 师 2012年 11月 26日 for循环程序设计

【实验目的】通过对for循环学习,了解java中的循环语句的应用和它们的用法。

【实验原理】for(表达式1;表达式2;表达式3){ //循环体 } 表达式1一般是一个赋值语句,它用来给循环控制变量 赋初值;表达式2是一个布尔类型的表达式,它决定什么时候退出循环;表达式3一般用来修改循环变量,控制变量每循环一次后按什么方式变化。这三个部分之间用“;”隔开。

【实验要求】windows操作系统(32位),安装jdk1.6,eclipse运行环境

【实验步骤】

(2)按给定的题目写出符合语法分析方法,按给定的题目给出语法分析方法的思想及分析表设计。

(3)按给定的题目给出中间代码序列的结构设计。对于for循环的具体操作,见程序test1(图1)

图1 for循环语句

(4)探究if与for循环嵌套,及其其他循环语句的使用,与for循环使用的差别,见程序(图2图3)

图2 if与for嵌套

图3 switch循环

【问题与解决方法】(1)如图1和2,这个两个程序中,主要遇到的问题在for后面的(表达式1;表达式2;表达式3)里面表示的书写,以及怎样把if嵌套在for语句中。(2)如图3,这个程序中,将其它循环使用的方法搞混。

解决方法:通过查阅资料,熟记了几个循环的使用方法,及其注意事项,将错误的一一修改。

【实验总结】通过这个实验,我已熟悉掌握了for等循环语句的用法,for它既可以单独用,也可以嵌套在for等循环语句中,增加了程序可读行,方便编程,为以后的学习java起到了一定铺垫作用,不过还需要多练习,才能熟能生巧,为以后java编程起到一定作用。参考文献:

1.郎波.java语言程序设计.(第二版).-北京:清华大学出版社,2010.9篇四:最新java实训报告总结心得

一、实训项目

简易记事本

二、实训目的和要求

本次实训是对前面学过的所有面向对象的编程思想以及java web编程方法的一个总结、回顾和实践,因此,开始设计前学生一定要先回顾以前所学的内容,明确本次作业设计所要用到的技术点并到网上搜索以及查阅相关的书籍来搜集资料。通过编写采用jsp+servlet+javabean技术框架的应用系统综合实例,以掌握java web开发技术。

具体要求有以下几点:

1.问题的描述与程序将要实现的具体功能。2.程序功能实现的具体设计思路或框架,并检查流程设计。3.代码实现。

4.设计小结。

三、实训项目的开发环境和所使用的技术

基于j2se基础,利用myeclipse 8.5以上版本的集成开发环境完成实训项目,界面友好,代码的可维护性好,有必要的注释和相应的文档。

四、实训地点、日程、分组情况:

实训地点:4栋303机房

日 程:

第一阶段:1.班级分组,选定课题,查阅相关资料 半天 2.划分模块、小组成员分工 半天 3.利用case工具进行系统设计和分析,并编制源程序 5天

第二阶段:上机调试,修改、调试、完善系统 2天

第三阶段:撰写、上交课程设计报告,上交课程设计作品源程序(每人1份)2天

五、程序分析

功能模块说明

弹出菜单

for(int f=0;f<4;f++)改变字号:

public void zihao(){ font f=new font(,font.plain,20);jta.setfont(f);} 设置字型

public void ziti(){ font f=new font(宋体,font.plain,15);改变字体颜色

public void font(){ jcolorchooser jcolor=new jcolorchooser();color fcolor=jta.getforeground();jta.setforeground(jcolor.showdialog(jta,选择字体颜色,fcolor));} 自动换行

public void action(){ jta.setlinewrap(true);//激活自动换行功能

实现接口

public void actionperformed(actionevent e){ 创建保存文件对话框

public void savefile(){ 创建打开文件对话框

private void openfile(){ jfilechooser filechoose=new jfilechooser();int result=filechoose.showopendialog(null);if(result==jfilechooser.approve_option)

} { try{

file file=filechoose.getselectedfile();filereader fr=new filereader(file);int len=(int)file.length();char[] context=new char[len];fr.read(context,0,len);fr.close();jta.settext(new string(context));jfilechooser filechoose=new jfilechooser();int result=filechoose.showsavedialog(null);if(result==jfilechooser.approve_option)

} { try{

file file=filechoose.getselectedfile();filewriter fw=new filewriter(file);fw.write(jta.gettext());fw.close();}catch(exception e){system.out.println(保存文件失败!);} }else return;}catch(exception e){system.out.println(打开文件失败!);} }else return;

六、程序设计及实现

1、实现弹出菜单(jpopupmenu)

2、设置字型,字体大小,字体颜色

3、实现自动换行

七、实训总结

通过3天的实训,虽然实训的时间不长,但是总体上收获是很大的,我们的java课程学到的只是java和皮毛,一开始我还没有信心完成。我仔细看了书上的代码之后。对计事本有了一个大体的了解,在初训的实候知道自己应该做一个什么样的计事本了,在实训的过程中也遇到了不少困难,通过查api文档和看书,解决了问题,在写到字符的查找的替换时后,用到了上课时学到的知识,对字体的风格的保存里面的颜色分离和还原方法,是通过查api文档获得的,现在我所写的计事本只实现在一些基本功能。简单的复制粘贴,字体风格的设置,还有就是查找和替换功能以及一些字体风格的保存.对文件的操作基本都用到了。

在实现记事本的功能过程中,也不是很顺利,基本的文件读写和保存文档的复制、粘贴、删除等功能还比较容易实现,但如何改变字体、字体颜色和背景颜色,就比较麻烦了,要实现字体颜色和背景颜色,首先要调用系统的调色板,再进行设置。但如何调用系统调色板?我是通过查阅帮助文档来找到其调用方法的。像自动换行、设置字体等都是通过方法来调用,给相关事件加上监听,在进行响应事件。整个程序中方法才是最关键的,也是最困难的。所以像查找、替换、转到几个功能我都不知道用什么方法,也由于时间有限,没有完成其功能。总体的感觉是对java有了一个全新的认识,现在感觉用java做小的图形用户程序有些缺陷,但是在其的应用方面。尤其是有网络方面的应用,在整个实训我也尝试过做一个小的画图软件。但是由于时间关系还有一个是自身的知识的欠缺,最终这个事情被搁浅下来了。最后还是进行计事本的编写。由于在做画图软件时花了不了时间,所以现在的计事本的功能不是很全,如果有更多的时间,我会把这个记事体再完善一下,再把画图软件也做出来。实训的时间不长,但是我会在课外把它们的功能完善。然后再学习一下java和网络的编程,体验java的前沿技术。

在学习的过程中也体会到,遇到问题也要请教。不然的话自己一个人去做的话会花很多的时间,我在做这个记事本的时间,其中也问到过许多问题,通过同学的帮助下解决了,提高了程序的开发进程。其他的同学有问题的话我也是给他们尽量解决。我认为学习知识的过程当中就应该是相互学习相互进步的。

虽然学习java的路还很找,但我会继续走下去。

第二篇:Java实验报告

《Java简易聊天室》

实验目的:实现简单的客服端与服务端通讯,进一步巩固,加深对Java语言基础知识的了解,将理论与实际相结合。

实验要求:能相互之间发送消息,并进行简单的异常处理。

聊天室截图与说明:

客户端

服务端

将客服端与服务端程序同时运行,此时会显示出客户端与服务端界面。在客户端界面上点击“连接”按钮,即可使客户端与服务端进程建立连接。在文本框中输入将要发送的消息,点击“发送”按钮,即可将消息发送到对应端口。当服务端发送消息时,服务端便相当于客户端。当需要终止连接时,关闭相应窗口即可。

设计概要:类/接口/函数说明

1.public class ClientUI extends Jframe{}

public class ServerUI extends Jframe{}

ClientUI与ServerUi继承Frame类构建客户端与服务器端窗口。

2.class ChatClient extends Thread{}

class SvrCom extends Thread{}

通讯类ChatClient/SvrCom负责守候数据到来

3.public void run()

用于监听客户端/服务器端发送来的信息,运行连接

4.public void sendMsg(String msg){// 用于发送信息

try {

out.println(“【客户端】” + msg);

} catch(Exception e){

System.out.println(e);

}

} public void sendMsg(String msg){// 用于发送信息

try {

out.println(“【服务器】” + msg);// 把信息写入输出流

} catch(Exception e){

System.out.println(e);

} } 5.try {

msg = in.readLine();// 从in对象上读数据信息

} catch(SocketException ex){

System.out.println(ex);

break;

} catch(Exception ex){

System.out.println(ex);

}

if(msg!= null && msg.trim()!= “"){

System.out.println(”>>“ + msg);

ui.mainArea.append(msg + ”n“);

}

简单的异常处理

6.public ChatClient(String ip, int port, ClientUI ui){// 初始化ChatClient类

this.ui = ui;

try {

sc = new Socket(ip, port);// 创建sc, 用服务器ip和端口作参数

System.out.println(”已顺利联接到服务器。“);

out = new PrintWriter(sc.getOutputStream(), true);

in = new BufferedReader(new InputStreamReader(sc.getInputStream()));

} catch(Exception e){

System.out.println(e);

}

start();

public SvrCom(ServerUI ui){ // 初始化SvrCom类

this.ui = ui;

ui.setServer(this);

try {

soc = new ServerSocket(6666);// 开设服务器端口6666

System.out.println(”启动服务器成功,等待端口号:6666“);

client = soc.accept();// 当客户机请求连接时,创建一条链接

System.out.println(”连接成功!来自“ + client.toString());

in = new BufferedReader(new InputStreamReader(client

.getInputStream()));

out = new PrintWriter(client.getOutputStream(), true);

} catch(Exception ex){

System.out.println(ex);

}

start();

自我评价或总结:经过本次实验,进一步了解了客户端与服务器之间的通信机制,对以后的编程实践垫定了基础。同时还巩固了GUI图形界面知识,更重要的是它使我对网络编程有了一定的了解,也学到了不少知识。

附:

源代码:import java.io.*;import java.net.*;import javax.swing.*;import java.awt.event.*;import java.awt.*;

public class ClientUI extends JFrame { JTextArea mainArea;

JTextArea sendArea;

ChatClient client;JTextField ipArea;JButton btnLink;public void setClient(ChatClient client){ this.client = client;} public ClientUI(){ super(”客户端“);Container contain = getContentPane();contain.setLayout(new BorderLayout());mainArea = new JTextArea();JScrollPane mainAreaP = new JScrollPane(mainArea);JPanel panel = new JPanel();panel.setLayout(new BorderLayout());sendArea = new JTextArea(3, 8);JButton sendBtn = new JButton(”发送“);sendBtn.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent ae){

client.sendMsg(sendArea.getText());

mainArea.append(”【客户端】“ + sendArea.getText()+ ”n“);

sendArea.setText(”“);

} });JPanel ipPanel = new JPanel();ipPanel.setLayout(new FlowLayout(FlowLayout.LEFT, 10, 10));ipPanel.add(new JLabel(”服务器:“));ipArea = new JTextField(12);ipArea.setText(”127.0.0.1“);ipPanel.add(ipArea);btnLink = new JButton(”连接“);ipPanel.add(btnLink);btnLink.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent ae){

client = new ChatClient(ipArea.getText(), 6666, ClientUI.this);

ClientUI.this.setClient(client);

} });

panel.add(sendBtn, BorderLayout.EAST);

panel.add(sendArea, BorderLayout.CENTER);

contain.add(ipPanel, BorderLayout.NORTH);

contain.add(mainAreaP, BorderLayout.CENTER);

contain.add(panel, BorderLayout.SOUTH);

setSize(500, 300);

setVisible(true);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}

public static void main(String[] args){

ClientUI ui = new ClientUI();} }

class ChatClient extends Thread { Socket sc;BufferedReader in;PrintWriter out;ClientUI ui;

public ChatClient(String ip, int port, ClientUI ui){

this.ui = ui;

try {

sc = new Socket(ip, port);

System.out.println(”已顺利联接到服务器。“);

out = new PrintWriter(sc.getOutputStream(), true);

in = new BufferedReader(new InputStreamReader(sc.getInputStream()));

} catch(Exception e){

System.out.println(e);

}

start();}

public void run(){

String msg = ”“;

while(true){

try {

msg = in.readLine();

} catch(SocketException ex){

System.out.println(ex);

break;

} catch(Exception ex){

System.out.println(ex);

}

if(msg!= null && msg.trim()!= ”“){

System.out.println(”>>“ + msg);

ui.mainArea.append(msg + ”n“);

}

} }

public void sendMsg(String msg){

try {

out.println(”【客户端】“ + msg);

} catch(Exception e){

System.out.println(e);

} } } import java.io.*;import java.net.*;import javax.swing.*;import java.awt.event.*;import java.awt.*;/** * 服务端界面ServerUI */ public class ServerUI extends JFrame { JTextArea mainArea;

JTextArea sendArea;

JTextField indexArea;

SvrCom server;

public void setServer(SvrCom server){

this.server = server;}

public ServerUI(){

super(”服务器端“);

Container contain = getContentPane();

contain.setLayout(new BorderLayout());

mainArea = new JTextArea();

JScrollPane mainAreaP = new JScrollPane(mainArea);JPanel panel = new JPanel();panel.setLayout(new BorderLayout());sendArea = new JTextArea(3, 8);JButton sendBtn = new JButton(”发送“);sendBtn.addActionListener(new ActionListener()

{

public void actionPerformed(ActionEvent ae){

server.sendMsg(sendArea.getText());

mainArea.append(”【服务器】sendArea.getText()+ “n”);

sendArea.setText(“");

}

});JPanel tmpPanel = new JPanel();indexArea = new JTextField(2);indexArea.setText(”0“);tmpPanel.add(sendBtn);tmpPanel.add(indexArea);panel.add(tmpPanel, BorderLayout.EAST);panel.add(sendArea, BorderLayout.CENTER);contain.add(mainAreaP, BorderLayout.CENTER);contain.add(panel, BorderLayout.SOUTH);setSize(500, 300);setVisible(true);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);} public static void main(String[] args){ ServerUI ui = new ServerUI();SvrCom server = new SvrCom(ui);}

} class SvrCom extends Thread

{ Socket client;ServerSocket soc;BufferedReader in;PrintWriter out;ServerUI ui;// ChatServer server;public SvrCom(ServerUI ui){

” +

this.ui = ui;ui.setServer(this);try {

soc = new ServerSocket(6666);

}

System.out.println(“启动服务器成功,等待端口号:6666”);

client = soc.accept();

System.out.println(“连接成功!来自” + client.toString());

in = new BufferedReader(new InputStreamReader(client

.getInputStream()));

out = new PrintWriter(client.getOutputStream(), true);} catch(Exception ex){

System.out.println(ex);} start();} public void run(){ String msg = “";while(true){

try {

msg = in.readLine();

} catch(SocketException ex){

System.out.println(ex);

break;

} catch(Exception ex){

System.out.println(ex);

}

if(msg!= null && msg.trim()!= ”“){

System.out.println(”>>“ + msg);

ui.mainArea.append(msg + ”n“);

} } } public void sendMsg(String msg){ try {

out.println(”【服务器】" + msg);} catch(Exception e){

System.out.println(e);} }

第三篇:JAVA实验报告

学 生 实 验 报 告 册

(理工类)

课程名称:面向对象程序设计 专业班级:16计算机科学与技术(专转本)

学生学号: 1613203022 学生姓名: 张义丹

所属院部: 计算机工程 指导教师: 刘 晶 16 ——20 17 学年 第 2 学期

金陵科技学院教务处制 实验报告书写要求

实验报告上交电子稿,标题采用四号黑体,正文采用小四号宋体,单倍行距。

实验报告书写说明

实验报告中实验目的和要求、实验仪器和设备、实验内容与过程、实验结果与分析这四项内容为必需项。教师可根据学科特点和实验具体要求增加项目。

填写注意事项

(1)细致观察,及时、准确、如实记录。(2)准确说明,层次清晰。

(3)尽量采用专用术语来说明事物。

(4)外文、符号、公式要准确,应使用统一规定的名词和符号。(5)应独立完成实验报告的书写,严禁抄袭、复印,一经发现,以零分论处。

实验报告批改说明

实验报告的批改要及时、认真、仔细,一律用红色笔批改。实验报告的批改成绩采用五级记分制或百分制,按《金陵科技学院课堂教学实施细则》中作业批阅成绩评定要求执行。

实验项目名称:Java编程基础 实验学时: 6 同组学生姓名: ———— 实验地点: 工科楼A101 实验日期: 17.3.21~17.4.4 实验成绩: 批改教师: 刘晶 批改时间:

实验1 Java编程基础

一、实验目的和要求

(1)熟练掌握JDK1.6及Eclipse4.2编写调试Java应用程序及Java小程序的方法;(2)熟练掌握Java应用程序的结构;

(3)了解Java语言的特点,基本语句、运算符及表达式的使用方法;(4)熟练掌握常见数据类型的使用;

(5)熟练掌握if-else、switch、while、do-while、for、continue、break、return语句的使用方法;

(6)熟练掌握数组和字符串的使用;

(7)调试程序要记录调试过程中出现的问题及解决办法;

(8)编写程序要规范、正确,上机调试过程和结果要有记录,不断积累编程及调试经验;

(9)做完实验后给出本实验的实验报告。

二、实验仪器和设备

奔腾以上计算机,Windows 操作系统,装有JDK1.6和Eclipse4.2软件。

三、实验过程

(1)分别使用JDK命令行和Eclipse编译运行Java应用程序;适当添加注释信息,通过javadoc生成注释文档;为主方法传递参数“Hello world”字符串,并输出,记录操作过程。

public class Hello { public static void main(String args[]){ System.out.println(“Hello!”);} }(2)分别使用JDK命令行和Eclipse编译Java Applet,并建立HTML文档运行该Applet。压缩生成“.jar”文件。记录操作过程。import java.awt.*;import java.applet.Applet;public class HelloApplet extends Applet { public void paint(Graphics g){ g.setColor(Color.red);g.drawString(“Hello!”,20,20);}

} (3)根据变量score中存放的考试分数,输出对应的等级。要求从键盘输入学生成绩,60分以下为D等;60~69为C等;70~89为B等;90~100为A等。(4)编写一个Java Application程序,输出区间[200,300]上的所有素数,将其用数组prime[]保存,并以每10个一行的形式显示运行结果。(5)输出下列数字形式,要求用二维数组完成。①n=4 0 0 0 0 0 1 1 1 0 1 2 2 0 1 2 3 ② n=4 1 1 2 1 1 2 3 2 1 1 2 3 4 3 2 1(6)求二维数组的鞍点,即该位置上的元素在该行上最大,在列上最小。也可能无鞍点。(7)分析下列程序的输出结果,掌握equals()方法和“= =”的区别。class StringTest2{ public static void main(String args[]){

String s1 = “This is the second string.”;

String s2 = “This is the second string.”;

String s3 = new String(“This is the second string.”);

String s4 = new String(s1);

String s5 = s1;

boolean result121 = s1.equals(s2);

boolean result122 = s1 == s2;

boolean result131 = s1.equals(s3);

boolean result132 = s1 == s3;

boolean result141 = s1.equals(s4);

boolean result142 = s1 == s4;

boolean result151 = s1.equals(s5);

boolean result152 = s1 == s5;

System.out.println(“s1 equals s2= ” +result121);

System.out.println(“s1 == s2= ” +result122);

System.out.println(“s1 equals s3= ” +result131);

System.out.println(“s1 == s3= ” +result132);

System.out.println(“s1 equals s4= ” +result141);

System.out.println(“s1 == s4= ” +result142);

System.out.println(“s1 equals s5= ” +result151);

System.out.println(“s1 == s5= ” +result152);} }(8)判断回文字符串

回文是一种“从前向后读”和“从后向前读”都相同的字符串。如“rotor”是一个回文字符串。

程序中使用了两种算法来判断回文字符串:

算法一:分别从前向后和从后向前依次获得原串str的一个字符ch1、ch2,比较ch1和ch2,如果不相等,则str肯定不是回文串,yes=false,立即退出循环:否则继续比较,直到字符全部比较完,yes的值仍为true,才能肯定str是回文串。

算法二:将原串str反转成temp串,再比较两串,如果相等则是回文字符串。(9)使用String类的compareTo(String s)方法,对以下字符串从小到大排序:“melon”, “apple”, “pear”, “banana”,显示输出排序结果。

要求:

(1)编译调试程序之前应配置好环境变量;

(2)要分别掌握用JDK命令行和Eclipse集成开发环境调试Java程序;(3)注意Java两大类程序:应用程序和小程序的区别。

程序清单:

(建议程序中适当添加注释信息,增强可读性;较长程序可分栏书写,保证报告排版整洁美观。)

(1)主方法传递参数“Hello world”字符串,并输出

public class Hello { public Hello(){

System.out.println(“HelloWorld!”);} public static void main(String args[]){

new Hello();} }(2)Eclipse编译Java Applet import java.awt.*;import java.applet.Applet;public class HelloApplet extends Applet { int height,width;public void init(){

this.height=100;

this.width=300;}

public void paint(Graphics g){

g.setColor(Color.red);

g.drawString(“Hello!”, 20, 20);} }(3)

package b;import java.util.Scanner;public class Test { public static void main(String args[]){

int score;

//char grade;

System.out.println(“请输入分数按回车”);

Scanner reader=new Scanner(System.in);

score=reader.nextInt();

if(score>=90&&score<=100){

System.out.println(“A”);

}

else if(score>=70&&score<=89){

System.out.println(“B”);

}

else if(score>=60&&score<=69){

System.out.println(“C”);

}

else if(score<60){

System.out.println(“D”);

}

else{

System.out.println(“数据错误”);

} } }(4)

public class Lim { public static void main(String[] args){

int[] prime = calculation(20, 200, 300);

for(int i = 0;i < prime.length;i++){

if(prime[i]!= 0){

if(i % 10 == 0 && i!= 0)

System.out.println();

System.out.print(prime[i] + “ ”);// 打印数据

}

}

} public static int[] calculation(int length, int start, int end){

int j;

int step = 0;

int[] prime = new int[length];

for(int i = start;i <= end;i++)

{

j = 2;

while(i % j!= 0){

j++;

}

if(j == i)

{

prime[step] = i;

step++;

}

}

return prime;

} }(5)① public class shuzu { public static void main(String args[]){

int i,j;

int arr[][]=new int[4][];

for(i=0;i

arr[i]=new int[arr.length];for(i=0;i<4;i++)

for(j=3;j>=i;j--){

arr[i][j]=i;

} for(j=0;j<4;j++){

for(i=3;i>=j;i--){

arr[i][j]=j;

} }

for(i=0;i<=3;i++){

for(j=0;j<=3;j++){

System.out.print(arr[i][j]);

System.out.print(“ ”);

}

System.out.println();

}

} } ②public class Shuzu { public static void main(String args[]){ int num[][]=new int[4][];for(int i=0;i

num[i]=new int[2*i+1];

for(int m=0;m

System.out.print(“ ”);

}

int k=i+1;

for(int j=0;j

if(j<=i)

num[i][j]=j+1;

else{

k--;

num[i][j]=k;

}

System.out.print(num[i][j]+“ ”);

}

System.out.println();} } }(6)public class test { public static void main(String[] args){

// TODO Auto-generated method stub

int[][] mat = {{11,12,13},{4,5,6},{7,8,9}};

for(int i=0;i

{

for(int j=0;j

System.out.print(mat[i][j]+“ ”);

System.out.println();

}

boolean find = false;//找到鞍点标记

int row=0;//第1行下标

int max=0;//记录当前行最大值的列下标

while(!find && row

{

max=0;//初始设每行第1列值最大

for(int j=1;j

if(mat[row][j]>mat[row][max])//mat[row][max]为该行最大值

max = j;

boolean yes = true;//再判断mat[row][max]是否在列上最小

int j=0;

while(yes && j

{

if(mat[j][max]

yes=false;

j++;

}

if(yes)

find = true;

else

row++;

}

if(find)

System.out.println(“The dort: ”+mat[row][max]);

else

System.out.println(“The dort: null”);} }(8)import java.util.Scanner;public class HuiWenTest { public static void main(String[] args){

// TODO Auto-generated method stub

System.out.println(“请输入一个字符串”);@SuppressWarnings(“resource”)

Scanner input = new Scanner(System.in);String str = input.next();StringBuilder sb=new StringBuilder(str);sb.reverse();//将Sr倒置的方法 String newStr=new String(sb);if(str.equals(newStr)){ System.out.println(str+“是回文字符串”);}else{ System.out.println(str+“不是回文字符串”);} } }(9)import java.util.*;public class SortString { public static void main(String[] args){

// TODO Auto-generated method stub

String [ ] a={“melon”,“apple”,“pear”,“banana”};

String [ ] b=Arrays.copyOf(a,a.length);System.out.println(“使用用户编写的SortString类,按字典序排列数组a:”);SortString.sort(a);System.out.println(“排序结果是:”);for(String s:a){ System.out.print(“ ”+s);} System.out.println(“");System.out.println(”使用类库中的Arrays类,按字典序排列数组b:“);Arrays.sort(b);System.out.println(”排序结果是:“);for(String s:b){ System.out.print(” “+s);} }

四、实验结果与分析(程序运行结果及其分析)

(1)

(2)

(3)

(4)

(5)

(6)

(7)

(8)

(9)

五、实验体会(遇到问题及解决办法,编程后的心得体会)

在这次实验中,我知道了eclipse和jdk运行程序的区别,jdk比较麻烦一些,需要配置变量。在实验中,配置jdk的环境变量要注意它的path和 classpath,如果classpath本身就有,可以在后面加分号,这样不影响其它的classpath的使用。学会了如何生成注释文档,主函数传递参数的方法,还有压缩文件,实验中还对数组的创建和使用进行了练习,还有一些类的应用。

实验项目名称: 面向对象编程 实验学时: 8 同组学生姓名: ———— 实验地点: 工科楼A101 实验日期: 17.4.11~17.5.2 实验成绩: 批改教师: 刘晶 批改时间:

实验2 面向对象编程

一、实验目的和要求

(1)熟练掌握Java语言类定义的基本语法;(2)熟练掌握类成员的访问控制,对象建立的方法;(3)熟练掌握类构造方法、成员方法的定义和重载;(4)熟练掌握类继承、多态和抽象性;(5)熟练掌握接口的定义和实现方法;(6)掌握基本的异常处理方法;

(7)调试程序要记录调试过程中出现的问题及解决办法;

(8)编写程序要规范、正确,上机调试过程和结果要有记录,不断积累编程及调试经验;

(9)做完实验后给出本实验的实验报告。

二、实验仪器和设备

奔腾以上计算机,Windows 操作系统,装有JDK1.6和Eclipse4.2软件。

三、实验过程

(1)定义一个Man类,保存在Man.java文件中,类中包含说话方法如下: public class Man

{

public void say()

{

System.out.println(“我是中国人!”);

}

} 为此类打包为cn.edu.jit.chinese;再在Man.java文件所在路径下,创建一个China.java文件,其中定义China类如下: public class China

{

public static void main(String[] args)

{

Man lihua = new Man();

lihua.say();

}

}

在China类中引用Man类,输出显示“我是中国人!”。试着去掉Man类的public修饰,看看会发生什么情况?

(2)设计复数类,成员变量包括实部和虚部,成员方法包括实现复数加法、减法、字符串描述、比较是否相等等操作。

(3)包的建立与使用:设计计算器类Calculator,计算加、减、乘、除和立方体体积,并且打包为mypackage。观察源文件目录下是否生成了mypackage文件夹,在该文件夹中是否有Calculate.class文件。编辑PackageDemo.java,保存在Calculator.java同一目录下,引用计算器类的各方法显示计算结果。

(4)试编码实现简单的银行业务:处理简单帐户存取款、查询。编写银行帐户类BankAccount,包含数据成员:余额(balance)、利率(interest);操作方法:查询余额、存款、取款、查询利率、设置利率。再编写主类UseAccount,包含main()方法,创建BankAccount类的对象,并完成相应操作。

(5)假定根据学生的3门学位课程的分数决定其是否可以拿到学位,对于本科生,如果3门课程的平均分数超过60分即表示通过,而对于研究生,则需要平均超过80分才能够通过。根据上述要求,请完成以下Java类的设计: 1)设计一个基类Student描述学生的共同特征。

2)设计一个描述本科生的类Undergraduate,该类继承并扩展Student类。3)设计一个描述研究生的类Graduate,该类继承并扩展Student类。

4)设计一个测试类StudentDemo,分别创建本科生和研究生这两个类的对象,并输出相关信息。

(6)设计三角形类,继承图形抽象类,计算三角形面积和周长。

(7)试编码实现多态在工资系统中的应用:给出一个根据雇员类型利用abstract方法和多态性完成工资单计算的程序。Employee是抽象类,Employee的子类有Boss(每星期发给他固定工资,而不计工作时间)、CommissionWorker(除基本工资外还根据销售额发放浮动工资)、PieceWorker(按其生产的产品数发放工资)、HourlyWorker(根据工作时间长短发放工资)。该例的Employee的每个子类都声明为final,因为不需要再继承它们生成子类。在主测试类Test中测试各类雇员工资计算结果。

提示:对所有雇员类型都使用earnings()方法,但每个人挣的工资按他所属的雇员类计算,所有雇员类都是从超类Employee派生出的。在超类中声明earnings()为抽象方法,并且对于每个子类都提供恰当的earnings()的实现方法。为了计算雇员的工资,程序仅仅使用雇员对象的一个超类引用并调用earnings()方法。在一个实际的工资系统中,各种Employee对象的引用可以通过一个Employee引用数组来实现。程序依次使用数组的每个元素(Employee引用)调用每个对象的earnings()方法。Employee类定义如下: abstract class Employee { private String firstName;private String lastName;public Employee(String first,String last){

firstName=first;lastName=last;} public String getEmployeeName(){ return firstName;} public String getLastName(){ return lastName;} public String toString(){ return firstName+lastName;} public abstract String earnings();}(8)设计圆柱体类和圆椎体类,继承圆类Circle并实现体积接口Volume,计算表面积和体积。

(9)定义一个接口CanFly,描述会飞的方法public void fly();分别定义飞机类和鸟类,实现CanFly接口。定义一个测试类,测试飞机和鸟。测试类中定义一个makeFly(CanFly obj)方法,让会飞的事物飞起来(即调用相应类的fly()方法)。然后在main方法中创建飞机对象和鸟对象,并在main方法中调用makeFly(CanFly obj)方法,让飞机和鸟起飞。

(10)异常的捕获:计算两数相除并输出结果。使用三个catch子句,分别捕捉输入输出异常、除数为0的异常和参数输入有误异常。import java.io.*;class Ex1 { public static void main(String args[ ]){ try{ BufferedReader strin=new BufferedReader(new InputStreamReader(System.in));//建立输入流缓冲区 System.out.print(”请输入除数:“);String cl=strin.readLine();//键盘输入 int a=Integer.parseInt(cl);System.out.print(”请输入被除数:“);cl=strin.readLine();int b=Integer.parseInt(cl);int c=b/a;System.out.println(”商为:“+c);} //捕获与I/O有关的异常(空白处补全捕获语句)

//捕获数值转化时的异常,如不能将字符转化成数值

//捕获除数为0的异常

} } 编译并运行,当产生输入输出异常时显示异常信息;当输入除数为0时,出现算术异常,提示除数为0,并要求重新输入;当输入的不是整数时,如将30输成了3o,出现数值格式异常,提示输入整数。

(11)编写程序包含自定义异常MyException,当100被13和4除时抛出该异常,其余除数显示商值。

要求:

(1)注意选用适当的类成员修饰符(private、protected、public等),比较它们的使用情况;

(2)养成良好的编程习惯,严格按照命名规则为包、类及类成员命名,将每个程序打包,包的命名方式如two.num1表示实验二的第一题;

(3)学会使用Eclipse的各种调试方法;

(4)学会查阅Java API文档,如查找异常类的使用方法。

程序清单:

(建议程序中适当添加注释信息,增强可读性;较长程序可分栏书写,保证报告排版整洁美观。)(1)package cn.edu.jit.chinese;// 为Man类打包为cn.edu.jit.chinese public class Man { public void say(){

System.out.println(”我是中国人!“);} } package cn.edu.jit.chinese;

import cn.edu.jit.chinese.*;//导入包

public class China { public static void main(String[] args){

Man lihua = new Man();//主方法先创建类然后调用类

lihua.say();} }(2)public class Complex { private double real,image;//定义私有的real,image public Complex(double real,double image)

{this.real=real;//赋值

this.image=image;} public Complex(double real){this(real,0);} public Complex(){this(0,0);} public Complex(Complex c){this(c.real,c.image);} public double getReal(){return real;} public void setReal(double real){

this.real = real;} public double getImage(){

return image;} public void setImage(double image){

this.image = image;} public Complex add(Complex c1,Complex c2)//写方法

{Complex C=new Complex(c1.real+c2.real,c1.image+c2.image);return C;} public Complex add(Complex c1){Complex C=new Complex(this.real+c1.real,this.image+c1.image);return C;} public Complex jian(Complex c1,Complex c2){Complex C=new Complex(c1.real-c2.real,c1.image-c2.image);return C;} public Complex jian(Complex c1){Complex C=new Complex(this.real-c1.real,this.image-c1.image);return C;} public boolean bijiao(Complex c1,Complex c2){return(c1.real==c2.real&&c1.image==c2.image);} public boolean bijiao(Complex c1){return(c1.real==this.real&&c1.image==this.image);} public String toString(){return this.real+”+“+this.image+”i“;} } public class ComplexText { public static void main(String[] args){

Complex c1=new Complex(2,5);//创建类,调用类里面的方法

Complex c2=new Complex(5,2);

Complex c3=new Complex();

System.out.println(c3.add(c1,c2));

System.out.println(c3.jian(c1,c2));

System.out.println(c3.bijiao(c1,c2));} }(3)public class Calculate { double i,j, t;public Calculate(int i,int j){this.i=i;this.j=j;} public Calculate(int i,int j,int t){this.i=i;this.j=j;this.t=t;} public double add(){return i+j;} public double jian(){return i-j;} public double cheng(){return i*j;} public double chu(){return i/j;} public double tiji(){return i*i*i+j*j*j+t*t*t;} } public class PackageDemo {//测试

public static void main(String[] args){

Calculate c1=new Calculate(8,4);

Calculate c2=new Calculate(8,4,2);

System.out.println(”相加=“+c1.add());

System.out.println(”相减=“+c1.jian());

System.out.println(”相乘=“+c1.cheng());

System.out.println(”相除 =“+c1.chu());

System.out.println(”立方体体积=“+c2.tiji());} }(4)public class BankAccount { double balance,interest,cunkuan;public BankAccount(double cunkuan,double balance)//写方法

{this.balance=balance;

this.cunkuan=cunkuan;} public void set(double cunkuan)

{if(cunkuan<10000)interest=0.1;

else if(cunkuan<50000)interest=0.25;

else if(cunkuan<100000)interest=0.035;

else interest=0.5;} public double get()

{ return interest;} public void chaxun(double balance,double cunkuan)

{System.out.println(”存款为:“+cunkuan);

System.out.println(”余额为:“+balance);} public void qu(double qukuan)

{System.out.println(”取款为:“+qukuan);System.out.println(”得到的利润率:“+(this.cunkuan-qukuan)*this.interest);} } public class UseAccount {//测试

public static void main(String[] args){

BankAccount c1=new BankAccount(40000,40000);

c1.chaxun(40000,20000);

c1.set(20000);

System.out.println(”利率为“+c1.get());

c1.qu(10000);} }(5)public class Student { String name;int age;float average,chainese;float math,Enghish;public Student(String name,int age){this.name=name;this.age=age;System.out.println(name+”:“+age+”岁“+” “);} public void set(float chinese,float math,float Enghish){average=(chinese+math+Enghish)/3;} public float get(){return average;} }

class Undergraduate extends Student// Student继承Undergraduate {public Undergraduate(String name,int age){ super(name,age);}

public void hege(float average){

this.average=average;

if(average>=60)System.out.println(”本科生成绩合格“);else System.out.println(”本科生成绩不合格“);}}

class Graduate extends Student// Student继承Graduate {public Graduate(String name,int age){ super(name,age);//调用

} public void hege(float average){ this.average=average;if(average>=80)System.out.println(”研究生生成绩合格“);else System.out.println(”研究生成绩不合格“);} } public class StudentDemo {//测试

public static void main(String[] args){

Undergraduate c1=new Undergraduate(”小明 “,22);

System.out.println(”本科生三门成绩分别为:“+”59,“+”85,“+”90“);

c1.set(65,75,60);

System.out.println(”本科生平均分=“+c1.get());

c1.hege(c1.get());

System.out.println();

Graduate c2=new Graduate(”小红 “,18);

System.out.println(”研究生生三门成绩分别为“+”90,“+”84,“+”88“);

c2.set(80,86,79);

System.out.println(”研究生生平均分=“+c2.get());

c2.hege(c2.get());}(6)public abstract class ClosedFigure {//定义抽象类

String shape;public ClosedFigure(String newShape){this.shape=newShape;} public abstract double perimeter();//定义抽象类,里面不能写方法

public abstract double area();} public class Triangle extends ClosedFigure {// ClosedFigure继承Triangle double a,b,c;public Triangle(String newShape,double a,double b,double c){super(”newShape“);this.a=a;this.b=b;

this.c=c;} public double perimeter(){return a+b+c;} public double area(){double s;s=(a+b+c)/2;return Math.sqrt(s*(s-a)*(s-b)*(s-c));} public String toString(){return(”三角形三边长:“+a+” “+b+” “+c+” “+”周长:“+perimeter()+”面积:“+area());} public class Test { public static void main(String[] args){

Triangle c1=new Triangle(”三角形“,3,4,5);

c1.perimeter();

c1.area();

System.out.println(c1.toString());} } }(7)public abstract class Employee { private String firstName;private String lastName;public Employee(String first,String last)

{firstName=first;

lastName=last;} public String getEmployeeName()

{return firstName;} public String getLastName()

{ return lastName;} public String toString()

{return firstName+lastName;} public abstract String earnings();} public final class Boss extends Employee{ double salary;public Boss(String first, String last, double salary){ super(first, last);

this.salary = salary;} public String earnings(){return(salary+”“);} } public final class CommissionWorker extends Employee { double salary;

double sale;double price;public CommissionWorker(String first, String last, double salary, double sale,double price){

super(first, last);

this.salary = salary;

this.sale = sale;

this.price = price;} public String earnings(){return(salary+sale*price+”“);} } public final class PieceWorker extends Employee{

double number;

double price;

public PieceWorker(String first, String last, double number,double price){

super(first, last);

this.number = number;

this.price=price;

}

public String earnings()

{return(number*price+”“);}

} public final class HourlyWorker extends Employee {double time;double money;public HourlyWorker(String first, String last, double time, double money){ super(first, last);this.time = time;this.money = money;} public String earnings(){ return(time*money+”“);} } public class Test { public static void main(String[] args){

Employee c1=new Boss(”张“,”三“,10000);

System.out.println(”张三月工资:“+c1.earnings());

Employee c2=new CommissionWorker(”李“,”四“,4000,1500,2);

System.out.println(”李四月工资:“+c2.earnings());

Employee c3=new PieceWorker(”王“,”五“,1000,3);

System.out.println(”王五月工资:“+c3.earnings());

Employee c4=new HourlyWorker(”刘“,”三“,600,30);

System.out.println(”刘三月工资:“+c4.earnings());} }(8)public class Circle { String shape;double r;double height;double pi;public Circle(String shape,double r,double height,double pi){this.shape=shape;this.height=height;this.r=r;this.pi=pi;} } public interface Volume { public abstract double area();public abstract double NewVolume();} public class Yuanzhu extends Circle implements Volume { public Yuanzhu(String shape, double r, double height, double pi){ super(shape, r, height, pi);} public double area(){ return pi*r*r;} public double NewVolume(){return area()*height;} } public class Yuanzhui extends Yuanzhu implements Volume { public Yuanzhui(String shape, double r, double height, double pi){

super(shape, r, height, pi);

// TODO Auto-generated constructor stub } double s;public double area(){s=Math.sqrt(height*height+r*r);return pi*r*s+pi*r*r;} public double NewVolum(){return 1.0/3*pi*r*pi*r*height;} } public class Test { public static void main(String[] args){

Yuanzhu c1=new Yuanzhu(”圆柱“,4,6,3.14);

Yuanzhui c2=new Yuanzhui(”圆锥“,2,3,3.14);

System.out.println(”圆柱表面积:“+c1.area());

System.out.println(”圆柱体积:“+c1.NewVolume());

System.out.println(”圆锥表面积:“+c2.area());

System.out.println(”圆锥体积:“+c2.NewVolume());} }(9)public interface CanFly {//定义接口CanFly public void fly();} public class Plane implements CanFly{//使用接口 @Override public void fly(){

// TODO Auto-generated method stub

System.out.println(”飞机借助螺旋桨飞上天空“);} } public class Bird implements CanFly{ @Override public void fly(){

// TODO Auto-generated method stub

System.out.println(”小鸟 借助翅膀飞上天空“);} } public class Test { static void makeFly(CanFly obj){

obj.fly();} public static void main(String[] args){

// TODO Auto-generated method stub

CanFly p =new Plane();

makeFly(p);

CanFly b =new Bird();

makeFly(b);} }(10)import java.io.*;public class Ex1 { public static void main(String args[ ]){ try{ BufferedReader strin=new BufferedReader(new InputStreamReader(System.in));//建立输入流缓冲区

System.out.print(”请输入除数:“);String cl=strin.readLine();//键盘输入

int a=Integer.parseInt(cl);System.out.print(”请输入被除数:“);cl=strin.readLine();int b=Integer.parseInt(cl);int c=b/a;System.out.println(”商为:“+c);} //捕获与I/O有关的异常(空白处补全捕获语句)

catch(IOException e){System.out.println(”输入输出异常“);} //捕获数值转化时的异常,如不能将字符转化成数值

catch(NumberFormatException e){System.out.println(”数值格式异常,重新输入“);

} //捕获除数为0的异常

catch(ArithmeticException e){System.out.println(”除数为0,重新输入“);} } }(11)(1)MyException类: package exp2_11;public class MyException extends Exception{ MyException(String msg){

super(msg);} }(2)Div主类: package exp2_11;import java.io.*;public class Div { public static void main(String args[])throws MyException{

try{

BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

System.out.print(”请输入实数除法运算的被除数:“);

String str = in.readLine();

double a = Double.parseDouble(str);

System.out.print(”请输入除数:“);

str = in.readLine();

double b = Double.parseDouble(str);

System.out.println(”商结果:“+division(a,b));

}

catch(ArithmeticException e1){

System.out.println(”商结果:Infinity“+e1);

System.out.println(”商结果:NaN“+e1);

}

catch(NumberFormatException e2){

System.out.println(”异常:字符串不能转换成整数!“+e2);

}

catch(IOException e3){

System.out.println(”异常:IO异常“+e3);

}

finally{

System.out.println(”程序结束!“);

} } static double division(double a,double b)throws MyException{

if(a==100 &&(b==4 || b==13))

throw new MyException(”不符规范“);

else return(a/b);} }

四、实验结果与分析(程序运行结果及其分析)

(1)

去掉Man类的public修饰,程序运行不出来,提示缺少Man的公开方法。(2)

(3)

(4)

(5)

(6)

(7)

(8)

(9)

(10)

(11)

五、实验体会(遇到问题及解决办法,编程后的心得体会)

学习程序设计的基本目的就是培养描述实际问题的程序化解决方案的关键技能Java面向对象程序设计是一门实践性比较强的课程在实际中我们必须把理论和实践结合起来。在实验中我们对照课本的知识然后进行实际的操作而后发现实际的运用比课本提到的要多很多理论总是来源于实践我们必须在现有的理论的基础上进行有效地实践。而这次实验也让我看到了现在学习的一个很大弱点就是实践的实践往往很少。在现实社会中我们必须懂得实际的操作才能更好的服务于社会。所以我必须在以后的学习中多动手多实际操作争取能在实践中找到属于自己新的感悟,终于在学习Java时达到了事半功倍的效果。

实验项目名称: 图形用户界面 实验学时: 6 同组学生姓名: ———— 实验地点: 工科楼A101 实验日期: 17.5.9~17.5.23 实验成绩: 批改教师: 刘晶 批改时间:

实验3 图形用户界面

一、实验目的和要求

(1)掌握Swing组件的使用方法;

(2)熟练掌握Swing中常用布局管理器的使用方法;(3)掌握用户界面动作与事件的处理程序的编写方法;(4)熟练掌握构造用户界面的方法和常见界面元素的使用;(5)熟练掌握Java绘图的主要方法。

(6)调试程序要记录调试过程中出现的问题及解决办法;

(7)编写程序要规范、正确,上机调试过程和结果要有记录,不断积累编程及调试经验;

(8)做完实验后给出本实验的实验报告。

二、实验仪器和设备

奔腾以上计算机,Windows 操作系统,装有JDK1.6和Eclipse4.2软件。

三、实验过程

1.计算器设计

2.整数进制转换

将一个十进制整数分别转换成二进制、八进制和十六进制整数。

3.模拟裁判评分。

设计如图所示图形界面,显示n个裁判的评分,根据制定规则计算出最后得分。要求:图形界面采用表格显示裁判评分,随裁判人数变化而变化;指定分数范围,若超出,则异常处理;

得分规则有指定接口约定,由多个接口对象给出多种得分规则,如求平均数值,或去掉一个最高分和一个最低分后,再求平均值。

4.编译运行下例,然后修改程序,当使用鼠标单击后在另一位置重新绘制月亮。【例】 在Applet中画月亮。import java.awt.*;import java.applet.Applet;public class MoonApplet extends Applet { public void paint(Graphics g)//在Applet上绘图 { g.setColor(Color.red);g.drawString(”The Moon“,100,20);int x=0,y=0;//圆外切矩形左上角坐标 x = this.getWidth()/4;y = this.getHeight()/4;int diameter = Math.min(this.getWidth()/2, this.getHeight()/2);//圆的直径

g.setColor(Color.yellow);g.fillOval(x,y,diameter,diameter);//画圆

g.setColor(this.getBackground());//设置为背景色 g.fillOval(x-20,y-20,diameter,diameter);//画圆 } } 5.根据阿基米德螺线的极坐标方程:r=aθ画出相应图形。

要求:

(1)注意选用适当的布局管理器设计图形用户界面,比较它们的布局情况;

(2)养成良好的编程习惯,严格按照命名规则为包、类及类成员命名,将每个程序打包,包的命名方式如three.num1表示实验三的第一题;(3)学会使用Eclipse的各种调试方法;

(4)学会查阅Java API文档,如查找事件类的处理里方法。

程序清单:

(建议程序中适当添加注释信息,增强可读性;较长程序可分栏书写,保证报告排版整洁美观。)

1.import java.awt.BorderLayout;import java.awt.GridLayout;import java.awt.event.*;import javax.swing.*;

public class Calulator implements ActionListener { JTextField t1;JPanel p1;JFrame f;static int count=1;static float value=0;int p2=0;String p;public Calulator(){f=new JFrame(”Calulator“);f.setSize(400,200);p1=new JPanel();t1=new JTextField(30);t1.setHorizontalAlignment(JTextField.RIGHT);p1.setLayout(new GridLayout(5,4));f.add(t1);String str[]= {”开根“,”+“,”-“,”清零“,”7“,”8“,”9“,”/“,”4“,”5“,”6“,”*“,”1“,”2“,”3“,”负“,”0“,”.“,”正“,”=“};for(int i=0;i<20;i++){JButton b=new JButton(str[i]);p1.add(b);b.addActionListener(this);} f.add(t1,BorderLayout.CENTER);f.add(p1,BorderLayout.SOUTH);f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);f.setVisible(true);}

public void actionPerformed(ActionEvent e){ String c = e.getActionCommand();if(c==”0“||c==”1“||c==”2“||c==”3“||c==”4“||c==”5“||c==”6“||c==”7“||c==”8“||c==”9“||c==”.“){if(p2==0){t1.setText(c);p2++;} else {t1.setText(t1.getText()+c);p2++;}} else if(p==”清零“){value=0;t1.setText(String.valueOf(value));} else {count++;p2=0;if(count==2){p=c;value=Float.parseFloat(t1.getText());} if(c==”=“){ if(p==”开根“){value=(float)Math.sqrt(Float.parseFloat(t1.getText()));t1.setText(String.valueOf(value));count-=2;} else if(p==”+“){value+=Float.parseFloat(t1.getText());count-=2;} else if(p==”-“){ value-=Float.parseFloat(t1.getText());count-=2;}

else if(p==”*“){value*=Float.parseFloat(t1.getText());count-=2;} else if(p==”/“){ value/=Float.parseFloat(t1.getText());count-=2;} else if(p==”正”){value=Math.abs(Float.parseFloat(t1.getText()));t1.setText(String.valueOf(value));count-=2;} else if(p==”负“){value=-1*Float.parseFloat(t1.getText());t1.setText(String.valueOf(value));count-=2;} t1.setText(String.valueOf(value));value=0;}} } public static void main(String[] args){ new Calulator();}}

2.import java.awt.*;import java.awt.event.*;import javax.swing.*;public class ZhuanH extends JFrame implements ActionListener{ TextField t1,t2,t3,t4;public ZhuanH(){super(”十进制整数转换“);this.setBackground(Color.BLUE);t1=new TextField(5);t2=new TextField(5);t3=new TextField(5);t4=new TextField(5);t1.setText(null);this.setSize(400,200);this.setLayout(new GridLayout(4,2));this.add(new Label(”十进制“));this.add(t1);t1.addActionListener(this);this.add(new Label(”二进制“));this.add(t2);this.add(new Label(”八进制“));this.add(t3);this.add(new Label(”十六进制“));this.add(t4);this.setDefaultCloseOperation(EXIT_ON_CLOSE);this.setVisible(true);}

public void actionPerformed(ActionEvent e){ String c = t1.getText();t2.setText(Integer.toBinaryString(Integer.parseInt(c)));t3.setText(Integer.toOctalString(Integer.parseInt(c)));

t4.setText(Integer.toHexString(Integer.parseInt(c)));} public static void main(String[] args){ new ZhuanH();}} 3.import java.awt.*;import java.awt.event.*;import javax.swing.*;public class PingFen extends JFrame implements ActionListener{ JPanel p,p1;JTextField t;JTextField t1[]=new JTextField[10];JButton b;float s=0,k;int t2,t3;public PingFen(){ super(”模拟裁判评分“);this.setSize(300,120);p1=new JPanel(new GridLayout(2,5));this.add(p1,”North“);p=new JPanel(new FlowLayout(FlowLayout.RIGHT));this.add(p,”South“);b=new JButton(”平均分“);t=new JTextField(10);p.add(b);p.add(t);for(int i=0;i<10;i++){ t1[i]=new JTextField(6);t1[i].setText(null);p1.add(t1[i]);} b.addActionListener(this);this.setDefaultCloseOperation(EXIT_ON_CLOSE);this.setVisible(true);} public void actionPerformed(ActionEvent e){float max,min;for(int i=0;i<10;i++){ try{ if(Float.parseFloat(t1[i].getText())>10.0)throw new Exception();

else continue;} catch(Exception ev){JOptionPane.showMessageDialog(this,t1[i].getText()+”超出范围“+”,“+”

请重新输入“);t1[i].setText(null);} } max=Float.parseFloat(String.valueOf(t1[0].getText()));min=Float.parseFloat(String.valueOf(t1[0].getText()));for(int i=1;i<10;i++){ if((k=Float.parseFloat(String.valueOf(t1[i].getText())))>max){max=k;t2=i;} else if((k=Float.parseFloat(String.valueOf(t1[i].getText())))

new PingFen();}} 4.import java.awt.*;import java.applet.Applet;import java.awt.event.*;public class MoonApplet extends Applet implements MouseListener { int x,y;public void init(){

x=this.getWidth()/4;

y=this.getHeight()/4;

addMouseListener(this);}

public void paint(Graphics g)//在Applet上绘图 { g.setColor(Color.red);g.drawString(”The Moon“,100,20);int diameter = Math.min(this.getWidth()/2, this.getHeight()/2);//圆的直径

g.setColor(Color.yellow);g.fillOval(x,y,diameter,diameter);//画圆

g.setColor(this.getBackground());//设置为背景色 g.fillOval(x-20,y-20,diameter,diameter);//画圆 } public void mouseClicked(MouseEvent e){

x=e.getX();y=e.getY();repaint();} 5.package package2;import java.awt.*;import java.awt.event.*;import javax.swing.*;public class LuoXuan extends JFrame implements ActionListener{ private static final long serialVersionUID = 1L;private LuoXuanCanvas canvas;//自定义画布组件 public LuoXuan(){super(”阿基米德螺线“);Dimension dim=getToolkit().getScreenSize();this.setBounds(dim.width/4,dim.height/4,dim.width/2,dim.height/2);JPanel p=new JPanel();this.add(p,”North“);JButton b=new JButton(”选择颜色“);p.add(b);b.addActionListener(this);this.canvas=new LuoXuanCanvas();this.getContentPane().add(this.canvas, ”Center“);this.setDefaultCloseOperation(EXIT_ON_CLOSE);this.setVisible(true);}

public void actionPerformed(ActionEvent e){Color c=JColorChooser.showDialog(this, ”选择颜色“, Color.BLUE);this.canvas.setColor(c);this.canvas.repaint();}

public static void main(String[] args){

new LuoXuan();} } class LuoXuanCanvas extends Canvas {private Color color;public void LuoXuan(Color color){this.setColor(color);} public void setColor(Color color){this.color=color;} public void paint(Graphics g){int x0=this.getWidth()/2;int y0 = this.getHeight()/2;g.setColor(this.color);g.drawLine(x0, 0, x0, y0*2);g.drawLine(0, y0, x0*2, y0);

for(int i=0;i<4000;i++){double angle=i*Math.PI/512;double radius=angle*0.5;int x=(int)Math.round(radius*angle*Math.cos(angle));int y=(int)Math.round(radius*angle*Math.sin(angle));g.drawOval(x0+x, y0+y, 1, 1);} }}

四、实验结果与分析(程序运行结果及其分析)

(分析每题采用的布局管理器、事件处理类和主要功能实现方法)1.2.3.4.38

5.五、实验体会(遇到问题及解决办法,编程后的心得体会)

这次实验主要是对图形用户界面的设计,这里有鼠标触发的事件,就要让类实现MouseListener,在类里面实现MouseListener的方法,这里是选择单击时(mouseClicked()),这个方法,在方法体内用getX(),getY()方法来获取当前坐标。

实验项目名称:Java高级编程 实验学时: 4 同组学生姓名: ———— 实验地点: 工科楼A101 实验日期: 17.5.30~17.6.6 实验成绩: 批改教师: 刘晶 批改时间:

实验4 Java高级编程

一、实验目的和要求

(1)了解文件的概念和文件对象的创建方法;(2)掌握使用文件输入输出流读写文件的方法;(3)了解线程的基本概念和多线程程序设计的基本方法;(4)掌握数据库连接的方法;

(5)创建SQL查询并更新数据库中的信息;

(6)调试程序要记录调试过程中出现的问题及解决办法;

(7)编写程序要规范、正确,上机调试过程和结果要有记录,不断积累编程及调试经验;

(8)做完实验后给出本实验的实验报告。

二、实验仪器和设备

奔腾以上计算机,Windows 操作系统,装有JDK1.6和Eclipse4.2软件,MySQL数据库。

三、实验过程

(1)使用文件字节输入/输出流,合并两个指定文件;当文件中的数据已排序时,合并后的数据也要求是已排序的。

(2)将Java的关键字保存在一个文本文件中,判断一个字符串是否为Java的关键字。(3)编写在构造方法中产生一个1-5之间的随机数的继承Thread类的线程类DelayPrintThread,使得线程体每休眠此随机数时间就打印输出线程号和休眠时间;另外编写应用DelayPrintThread类的Java应用程序TwoThread.java,在main()方法中创建两个线程,并应用sleep()控制主应用程序延迟一段时间。

(4)编写继承Runnable接口的Applet多线程小程序类MultiThreadApplet,编写继承该类的Applet小程序类Clock,在Clock中重新构造父类的run()方法,实现数字时钟的功能,要求不断刷新显示时、分、秒。

(5)为学生信息表stuinfo设计数据库应用程序,包括数据的输入、删除和查询功能。

要求:

(1)注意选用适当的文件流进行文件读写;

(2)学会两种创建线程的方法,并比较使用场合;

(3)养成良好的编程习惯,严格按照命名规则为包、类及类成员命名,将每个程序打包,包的命名方式如four.num1表示实验四的第一题;(4)学会查阅Java API文档,如查找常用工具类。

程序清单:

(建议程序中适当添加注释信息,增强可读性;较长程序可分栏书写,保证报告排版整洁美观。)1.import java.io.*;import java.util.Arrays;public class File { private String Filename;static int s=0,t=0;public File(String Filename){this.Filename=Filename;} public void writeToFile(byte[] buffer)throws IOException {if(s==0){FileOutputStream fout = new FileOutputStream(this.Filename);s++;Arrays.sort(buffer);fout.write(buffer);this.readFromFile();fout.close();} else { FileOutputStream fout1 = new FileOutputStream(this.Filename,true);Arrays.sort(buffer);fout1.write(buffer);fout1.close();} }

public void readFromFile()throws IOException { FileInputStream fin = new FileInputStream(this.Filename);if(t==0){System.out.println(”文件名“+”:“+this.Filename+”:“);t++;} else System.out.println(”合并两个文件后“+”:“+this.Filename+”:“);byte[] buffer = new byte[512];int count = fin.read(buffer);while(count!=-1){ for(int i=0;i

byte[] buffer = {0,1,4,3,2,5,6,9,8,7};byte[] buffer1 = {10,11,12,14,15,17,16,19,20,13,18};File afile = new File(”ByteFile.dat“);afile.writeToFile(buffer);afile.writeToFile(buffer1);afile.readFromFile();} } 2.import java.io.*;public class File { private String Filename;public File(String Filename){this.Filename=Filename;} public void writerLine(String[] s)throws IOException {FileWriter f = new FileWriter(this.Filename);System.out.println(this.Filename+”文件中的java关键字有“+”:“);for(int i=0;i

public void Text(String[] s,String[] s1){int i,j;for(i=0;i

if(s1[i]==s[j])

{System.out.println(s1[i]+”是java中的关键字“);break;}

else continue;if(j==s.length)System.out.println(s1[i]+”不是java中的关键字“);} } public static void main(String[] args)throws IOException { String[]s={”public“,”class“,”static“,”void“,”String“,”print“,”byte“,”boolean“,”int“,”short“,”long“,”throw“,”cath“,”continue“,”private“,”abstract“,”Interface“,”Exception“};String[] s1={”pblic“,”class“,”string“};File a=new File(”myfile.dat“);a.writerLine(s);a.Text(s,s1);} } 3.public class DelayPrintThread extends Thread{ private int number,time;public DelayPrintThread(int number)

{this.number=number;

time=(int)(Math.random()*5);} public void run(){ try { Thread.sleep(this.time);} catch(InterruptedException e){} System.out.println(”线程“+this.number+”:“+”休眠时间“+this.time);} public class TwoThread {

public static void main(String[] args){

DelayPrintThread a=new DelayPrintThread(1);DelayPrintThread b=new DelayPrintThread(2);a.start();b.start();} } 4.import java.applet.Applet;import java.awt.*;import java.util.Date;import java.text.SimpleDateFormat;public class MultiThreadApplet extends Applet implements Runnable { Thread a;public void start(){ if(a==null){a=new Thread(this);

a.start();}

} public void stop(){ if(a!=null){ a.stop();

a=null;} } public void run(){} public void paint(Graphics g){SimpleDateFormat sdf=new SimpleDateFormat(”yyyy年MM月dd日E a hh时 mm分ss秒“);g.drawString(sdf.format(new Date()),50,100);} }

public class Clock extends MultiThreadApplet{ public void run(){

repaint();try{a.sleep(1000);} catch(InterruptedException e){} }} 5.import java.sql.*;public class Statement{ public static void main(String args[])throws Exception { Class.forName(”sun.jdbc.odbc.JdbcOdbcDriver“);Connection conn=DriverManager.getConnection(”jdbc:odbc:student“);Statement stmt=conn.createStatement();String Sql=”SELECT stu_id,stu_name,city FROM student WHERE stu_id=5“;String Sql=”INSERT INTO student(stu_id,stu_name,city)VALUES('5','小红','徐州')“;String Sql=”DELETE FROM student WHERE stu_id=5“;int count=stmt.executeUpdate(Sql);System.out.println(”插入“+count+”行“);ResultSet rs=stmt.executeQuery(Sql);if(rs.next()){System.out.println(”行“+rs.getRow()+”:“+rs.getString(1)+”,“+rs.getString(2)+”,“+rs.getString(3));} else System.out.println(”没有数据“);count=stmt.executeUpdate(Sql);rs=stmt.executeQuery(Sql);if(rs.next()){System.out.println(”行“+rs.getRow()+”:“+rs.getString(1)+”,“+rs.getString(2)+”,“+rs.getString(5));} else System.out.println(”没有数据");} }

四、实验结果与分析(程序运行结果及其分析)1.45

2.3.4.五、实验体会(遇到问题及解决办法,编程后的心得体会)

通过这次实验,我基本能够理解线程的运行了,学会调用Thread类中的系统函数以及掌握这些函数的作用是难点,start()是开辟一条新线程。子类重写父类的run()方法,里面用sleep,来控制每个线程的休眠时间,但是得注意这里应该要用try-catch语句来捕获中断异常。

第四篇:JAVA实验报告

河北北方学院信息科学与工程学院

《Java程序设计》

实 验 报 告

实验学期 2014 至 2015 学年 第 2 学期

学生所在系部 信息科学与工程学院 年级 2012 专业班级 电子三班 学生姓名 冯洋 学号 201242220 任课教师 实验成绩

实验七 GUI标准组件及事件处理

一、课程设计目的: 《面向对象程序设计》是一门实践性很强的计算机专业基础课程,课程设计是学习完该课程后进行的一次较全面的综合练习。其目的在于通过实践加深学生对面向对象程序设计的理论、方法和基础知识的理解,掌握使用Java语言进行面向对象设计的基本方法,提高运用面向对象知识分析实际问题、解决实际问题的能力,提高学生的应用能力。

二、实验要求:

设计一个简单的文本编辑器,具有如下基本功能: 1)所见即所得的文本输入;

2)能方便地选中文本、复制、删除和插入文本; 3)具有一般编辑器所具有的查找和替换功能;

4)简单的排版,如设置字体和字号等。

三、课程设计说明:

1、需求分析:简单文本编辑器提供给用户基本的纯文本编辑功能,能够将用户录入的文本存储到本地磁盘中。能够读取磁盘中现有的纯文本文件,以及方便用户进行需要的编辑功能。文件操作能够实现新建、保存、打开文档等,编辑操作能过实现文本的剪贴、复制、粘贴等,格式操作能过实现字体设置、背景等,帮助操作能够实现关于主题的查看等功能

2、概要设计:

(一)其基本功能包括:

① 基本的文本操作功能。包括新建,保存,打开,保存。

② 基本的编辑功能。包括复制,剪贴,粘贴。③ 基本的格式功能,字体。④ 简单的帮助,关于主题。

(二)主要的组件包括:

① 基本的Frame框架; ② 菜单;

③ 打开文件对话框; ④ 保存文件对话框; ⑤ 颜色对话框; ⑥ 简单的帮助框架。

3、程序说明:

整个记事本分成:Jframe程序主体框架,Jmenu菜单栏、JtextArea文本输入区、PopupMenu右键菜单、JscrollPane滚动条、FonDialog字体类等。

本程序中首先定义一个Java Yang类继承JFrame作为最底层容器。要想记事本完成需求分析中相应的功能,还必须添加事件监听器。事件监听器不仅要添加在菜单栏和内容输入区,还需加在容器中。本程序中ActListener实现了ActionListener接口,用来监听并处理所有菜单项和内容输入区为事件源的事件。另外,还用来WindowListener来监听处理容器关闭触发的事件,WindowListener继承了WindowsAdapter类并覆盖了WindowsClosing方法。

四、程序调试:

1、调试分析:

(1)关于打开、保存和退出我运用了文件对话框, openFileDialog、saveFileDialog和System.exit()以及文件输入输出流来实现,新建功能我选用了 textArea.setText()方法.(2)对于剪贴,粘贴,复制的实现则用 复制

String text = textArea.getSelectedText();StringSelection selection= new StringSelection(text);clipboard.setContents(selection,null);粘贴

Transferable contents = clipboard.getContents(this);if(contents==null)return;String text;text=“";try { text =(String)contents.getTransferData(DataFlavor.stringFlavor);} catch(Exception ex){ } textArea.replaceRange(text,textArea.getSelectionStart(),textArea.getSelectionEnd());(3)至于字体功能的实现,则是新建了一个字体类,在这个类中设置了字形,字体以及大小并且有字体样式可预览用户当前的设置。FlowLayout()设置布局,setSize()设置大小add()添加需要用的原件。

添加监听器获取选择用户的字号大小

public void itemStateChanged(ItemEvent event){ size =(new Integer((String)event.getItem()).intValue());setCustomFont(new Font(name, type, size));} 设置字体

private void setCustomFont(Font customFont){ this.customFont = customFont;area.setFont(customFont);area.revalidate();} 获取字体

public Font getCustomFont(){ return(this.customFont);}

附录:源代码

//记事本主体类 import java.awt.event.*;import java.awt.*;import java.io.*;import java.awt.datatransfer.*;import javax.swing.*;

import java.awt.print.PrinterException;

public class MiniNote extends JFrame implements ActionListener {

JMenuBar menuBar = new JMenuBar();JMenu file = new JMenu(”文件(F)“), //菜单 edit = new JMenu(”编辑(E)“), format = new JMenu(”格式(O)“), view = new JMenu(”查看(V)“), help = new JMenu(”帮助(H)“);

JMenuItem[] menuItem ={ //菜单下拉项 new JMenuItem(”新建(N)“), new JMenuItem(”打开(O)“), new JMenuItem(”保存(S)“), new JMenuItem(”打印(P)“), new JMenuItem(”全选(A)“), new JMenuItem(”复制(C)“), new JMenuItem(”剪切(T)“), new JMenuItem(”粘贴(P)“), new JMenuItem(”自动换行(W)“), new JMenuItem(”字体(F)“), new JMenuItem(”状态栏(S)“), new JMenuItem(”帮助主题(H)“), new JMenuItem(”关于记事本(A)“), new JMenuItem(”页面设置(U)“), new JMenuItem(”退出(X)“), new JMenuItem(”查找(F)“), new JMenuItem(”查找下一个(N)“), new JMenuItem(”替换(R)“)};

JPopupMenu popupMenu = new JPopupMenu();;//右键菜单 JMenuItem [] menuItem1 ={ new JMenuItem(”撤销(Z)“), new JMenuItem(”剪切(X)“), new JMenuItem(”复制(C)“), new JMenuItem(”粘贴(V)“), new JMenuItem(”删除(D)“), new JMenuItem(”全选(A)“), };

private JTextArea textArea;//文本区域 private JScrollPane js;//滚动条 private JPanel jp;private FileDialog openFileDialog;//打开保存对话框 private FileDialog saveFileDialog;private Toolkit toolKit;//获取默认工具包。private Clipboard clipboard;//获取系统剪切板 private String fileName;//设置默认的文件名

/** * MiniEdit 方法定义 * * 实现记事本初始化 * **/ public MiniNote(){

fileName = ”无标题“;toolKit = Toolkit.getDefaultToolkit();clipboard = toolKit.getSystemClipboard();textArea =new JTextArea();js = new JScrollPane(textArea);jp = new JPanel();openFileDialog = new FileDialog(this,”打开“,FileDialog.LOAD);saveFileDialog = new FileDialog(this,”另存为“,FileDialog.SAVE);

js.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);jp.setLayout(new GridLayout(1,1));jp.add(js);textArea.setComponentPopupMenu(popupMenu);//文本区域添加右键 textArea.add(popupMenu);add(jp);setTitle(”迷你记事本“);setFont(new Font(”Times New Roman“,Font.PLAIN,15));setBackground(Color.white);setSize(800,600);setJMenuBar(menuBar);menuBar.add(file);menuBar.add(edit);menuBar.add(format);menuBar.add(view);menuBar.add(help);for(int i=0;i<4;i++){ file.add(menuItem[i]);edit.add(menuItem[i+4]);} for(int i=0;i<3;++i){ edit.add(menuItem[i+15]);} for(int i=0;i<2;++i){ format.add(menuItem[i+8]);help.add(menuItem[i+11]);} view.add(menuItem[10]);file.add(menuItem[14]);for(int i=0;i<6;++i){ popupMenu.add(menuItem1[i]);}

//窗口监听

addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ e.getWindow().dispose();System.exit(0);} });//注册各个菜单项的事件监听器

for(int i=0;i

Object eventSource = e.getSource();if(eventSource == menuItem[0])//新建动作 { textArea.setText(”“);} else if(eventSource == menuItem[1])//打开动作 { openFileDialog.setVisible(true);fileName = openFileDialog.getDirectory()+openFileDialog.getFile();if(fileName!= null){ openFile(fileName);} } else if(eventSource ==menuItem[2])//保存动作 { saveFileDialog.setVisible(true);fileName = saveFileDialog.getDirectory()+saveFileDialog.getFile();if(fileName!=null){ writeFile(fileName);} } else if(eventSource==menuItem[14])//退出动作 { System.exit(0);} else if(eventSource == menuItem[4]||eventSource == menuItem1[5])//全选动作 { textArea.selectAll();} else if(eventSource == menuItem[5]||eventSource == menuItem1[2])//复制动作 { String text = textArea.getSelectedText();StringSelection selection= new StringSelection(text);clipboard.setContents(selection,null);} else if(eventSource == menuItem[6]||eventSource == menuItem1[1])//剪切动作 { String text = textArea.getSelectedText();StringSelection selection = new StringSelection(text);clipboard.setContents(selection,null);textArea.replaceRange(”“, textArea.getSelectionStart(), textArea.getSelectionEnd());}

else if(eventSource == menuItem[7]||eventSource == menuItem1[3])//粘贴动作 { Transferable contents = clipboard.getContents(this);if(contents==null)return;String text;text=”“;try { text =(String)contents.getTransferData(DataFlavor.stringFlavor);} catch(Exception ex){

} textArea.replaceRange(text, textArea.getSelectionStart(),textArea.getSelectionEnd());} else if(eventSource == menuItem[8])//自动换行 { if(textArea.getLineWrap())textArea.setLineWrap(false);else textArea.setLineWrap(true);

} else if(eventSource == menuItem[9])//字体 {//实例化字体类

FontDialog fontdialog = new FontDialog(new JFrame(),”字体“,true);textArea.setFont(fontdialog.showFontDialog());//设置字体 }

else if(eventSource == menuItem[11])//帮助 { try { String filePath = ”C:/WINDOWS/Help/notepad.hlp“;Runtime.getRuntime().exec(”cmd.exe /c “+filePath);} catch(Exception ee){ JOptionPane.showMessageDialog(this,”打开系统的记事本帮助文件出错!“,”错误信息“,JOptionPane.INFORMATION_MESSAGE);} } else if(eventSource == menuItem[12])//关于记事本 { String help = ”记事本 版本1.0n操作系统:WIN 8 n编译器:eclipsen版权“ + ”所有: ESTON YANG n最终解释权归本人所有“ + ”“ + ”nBuild By 冯洋“ + ”n课程设计:JAVA“;JOptionPane.showConfirmDialog(null, help, ”关于记事本“, JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE);

} else if(eventSource == menuItem[15]||eventSource == menuItem[16])//查找下一个 { search();

} else if(eventSource == menuItem[17])//替换 { substitude();} else if(eventSource == menuItem[3])//打印 { try { textArea.print();} catch(PrinterException e1){ e1.printStackTrace();}

} } /** * openFile方法 * * 从TXT读进数据到记事本 * **/ public void openFile(String fileName){

try {

File file = new File(fileName);FileReader readIn = new FileReader(file);int size =(int)file.length();int charsRead = 0;char[] content = new char[size];while(readIn.ready()){ charsRead += readIn.read(content,charsRead,size-charsRead);} readIn.close();textArea.setText(new String(content,0,charsRead));} catch(Exception e){ System.out.println(”Error opening file!“);} } /** * saveFile方法 * * 从记事本写进数据到TXT * **/ public void writeFile(String fileName){ try { File file = new File(fileName);FileWriter write = new FileWriter(file);write.write(textArea.getText());write.close();} catch(Exception e){ System.out.println(”Error closing file!“);} } /** * substitude方法 * * 实现替换功能 * */ public void substitude(){

final JDialog findDialog = new JDialog(this, ”查找与替换“, true);Container con = findDialog.getContentPane();con.setLayout(new FlowLayout(FlowLayout.LEFT));JLabel searchContentLabel = new JLabel(”查找内容(N):“);JLabel replaceContentLabel = new JLabel(”替换为(P):“);final JTextField findText = new JTextField(30);final JTextField replaceText = new JTextField(30);final JCheckBox matchcase = new JCheckBox(”区分大小写(C)“);ButtonGroup bGroup = new ButtonGroup();final JRadioButton up = new JRadioButton(”向上(U)“);final JRadioButton down = new JRadioButton(”向下(D)“);down.setSelected(true);//默认向下搜索

bGroup.add(up);bGroup.add(down);

JButton searchNext = new JButton(”查找下一个(F)“);JButton replace = new JButton(”替换(R)“);final JButton replaceAll = new JButton(”全部替换(A)“);

//”替换“按钮的事件处理

replace.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ if(replaceText.getText().length()== 0 && textArea.getSelectedText()!= null)

textArea.replaceSelection(”“);if(replaceText.getText().length()> 0 && textArea.getSelectedText()!= null)

textArea.replaceSelection(replaceText.getText());} });

//”替换全部“按钮的事件处理

replaceAll.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ textArea.setCaretPosition(0);//将光标放到编辑区开头 int a = 0, b = 0, replaceCount = 0;if(findText.getText().length()== 0){ JOptionPane.showMessageDialog(findDialog, ”请填写查找内容!“, ”提示“,JOptionPane.WARNING_MESSAGE);findText.requestFocus(true);return;} while(a >-1){ int FindStartPos = textArea.getCaretPosition();//获取光标位置

String str1, str2, str3, str4, strA, strB;str1 = textArea.getText();str2 = str1.toLowerCase();str3 = findText.getText();str4 = str3.toLowerCase();if(matchcase.isSelected())//大小写区分 { strA = str1;strB = str3;} else { strA = str2;strB = str4;}

if(up.isSelected())//向上搜索

{ if(textArea.getSelectedText()== null){ a = strA.lastIndexOf(strB, FindStartPos1);} } else //向下搜索

{ if(textArea.getSelectedText()== null){ a = strA.indexOf(strB, FindStartPos);

} else { a = strA.indexOf(strB, FindStartPos-findText.getText().length()+ 1);} }

if(a >-1){ if(up.isSelected()){

textArea.setCaretPosition(a);b = findText.getText().length();textArea.select(a, a + b);} else if(down.isSelected()){

textArea.setCaretPosition(a);b = findText.getText().length();textArea.select(a, a + b);} } else { if(replaceCount == 0){ JOptionPane.showMessageDialog(findDialog,”找不到您查找的内容!“, ”记事本“,JOptionPane.INFORMATION_MESSAGE);} else { JOptionPane.showMessageDialog(findDialog, ”成功替换“+ replaceCount + ”个匹配内容!“, ”替换成功“,JOptionPane.INFORMATION_MESSAGE);} } if(replaceText.getText().length()== 0&& textArea.getSelectedText()!= null)//用空字符代替选定内容

{

textArea.replaceSelection(”“);replaceCount++;} if(replaceText.getText().length()> 0&& textArea.getSelectedText()!= null)//用指定字符代替选定内容 {

textArea.replaceSelection(replaceText.getText());replaceCount++;} }//end while } });

//”查找下一个“按钮事件处理

searchNext.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){ int a = 0, b = 0;int FindStartPos = textArea.getCaretPosition();String str1, str2, str3, str4, strA, strB;str1 = textArea.getText();str2 = str1.toLowerCase();str3 = findText.getText();str4 = str3.toLowerCase();

//”区分大小写“的CheckBox被选中

if(matchcase.isSelected())//区分大小写

{ strA = str1;strB = str3;} else //不区分大小写 { strA = str2;strB = str4;} if(up.isSelected())//向上搜索

{ if(textArea.getSelectedText()== null){

a = strA.lastIndexOf(strB, FindStartPosfindText.getText().length()findText.getText().length()+ 1);} } if(a >-1){ if(up.isSelected()){

textArea.setCaretPosition(a);b = findText.getText().length();textArea.select(a, a + b);} else if(down.isSelected()){

textArea.setCaretPosition(a);b = findText.getText().length();textArea.select(a, a + b);} } else { JOptionPane.showMessageDialog(null, ”找不到您查找的内容!“, ”记事本“, JOptionPane.INFORMATION_MESSAGE);} } });

//”取消“按钮及事件处理

JButton cancel = new JButton(”取消“);cancel.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ findDialog.dispose();} });//创建”查找与替换“对话框的界面

JPanel bottomPanel = new JPanel();JPanel centerPanel = new JPanel();JPanel topPanel = new JPanel();JPanel direction = new JPanel();

direction.setBorder(BorderFactory.createTitledBorder(”方向“));direction.add(up);direction.add(down);

JPanel replacePanel = new JPanel();replacePanel.setLayout(new GridLayout(1, 2));replacePanel.add(searchNext);replacePanel.add(replace);replacePanel.add(replaceAll);replacePanel.add(cancel);

topPanel.add(searchContentLabel);topPanel.add(findText);

centerPanel.add(replaceContentLabel);centerPanel.add(replaceText);centerPanel.add(replacePanel);

bottomPanel.add(matchcase);bottomPanel.add(direction);

con.add(replacePanel);con.add(topPanel);con.add(centerPanel);con.add(bottomPanel);

//设置”查找与替换“对话框的大小、可更改大小(否)、位置和可见性

findDialog.setSize(550, 240);findDialog.setResizable(true);findDialog.setLocation(230, 280);findDialog.setVisible(true);}//方法mySearch()结束 /** * search方法 * * 实现查找功能 * */ public void search(){

final JDialog findDialog = new JDialog(this, ”查找下一个“, true);Container con = findDialog.getContentPane();con.setLayout(new FlowLayout(FlowLayout.LEFT));JLabel searchContentLabel = new JLabel(” 查找内容(N):“);

final JTextField findText = new JTextField(17);final JCheckBox matchcase = new JCheckBox(”区分大小写(C)“);ButtonGroup bGroup = new ButtonGroup();final JRadioButton up = new JRadioButton(”向上(U)“);final JRadioButton down = new JRadioButton(”向下(D)“);down.setSelected(true);//默认向下搜索

bGroup.add(up);bGroup.add(down);

JButton searchNext = new JButton(”查找下一个(F)“);

//”查找下一个“按钮事件处理

searchNext.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){ int a = 0, b = 0;int FindStartPos = textArea.getCaretPosition();String str1, str2, str3, str4, strA, strB;str1 = textArea.getText();str2 = str1.toLowerCase();str3 = findText.getText();str4 = str3.toLowerCase();

//”区分大小写“的CheckBox被选中

if(matchcase.isSelected())//不区分大小写

{ strA = str1;strB = str3;} else //区分大小写 { strA = str2;strB = str4;} if(up.isSelected())//向上搜索

{ if(textArea.getSelectedText()== null){

a = strA.lastIndexOf(strB, FindStartPosfindText.getText().length()findText.getText().length()+ 1);} } if(a >-1){ if(up.isSelected()){

textArea.setCaretPosition(a);b = findText.getText().length();textArea.select(a, a + b);} else if(down.isSelected()){

textArea.setCaretPosition(a);b = findText.getText().length();textArea.select(a, a + b);} } else { JOptionPane.showMessageDialog(null, ”找不到您查找的内容!“, ”记事本“, JOptionPane.INFORMATION_MESSAGE);} } });

//”取消“按钮及事件处理

JButton cancel = new JButton(” 取消 “);cancel.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ findDialog.dispose();} });//创建”替换“对话框的界面

JPanel bottomPanel = new JPanel();JPanel centerPanel = new JPanel();JPanel topPanel = new JPanel();JPanel direction = new JPanel();direction.setBorder(BorderFactory.createTitledBorder(”方向“));direction.add(up);direction.add(down);topPanel.add(searchContentLabel);topPanel.add(findText);topPanel.add(searchNext);bottomPanel.add(matchcase);bottomPanel.add(direction);bottomPanel.add(cancel);con.add(topPanel);con.add(centerPanel);con.add(bottomPanel);//设置”替换“对话框的大小、可更改大小(否)、位置和可见性

findDialog.setSize(425, 200);findDialog.setResizable(true);findDialog.setLocation(230, 280);findDialog.setVisible(true);}

/** * 主函数 * * * **/ public static void main(String[] args){

MiniNote note = new MiniNote();note.setVisible(true);}

} //字体类

import java.awt.Font;import java.awt.GraphicsEnvironment;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.ItemEvent;import java.awt.event.ItemListener;import java.awt.*;import javax.swing.*;import java.awt.event.*;import javax.swing.border.*;import java.util.*;public class FontDialog {

private Dialog fontdialog;private JButton okButton, cancelButton;private int width = 480;private int height = 250;private String name = ”Serif“;private int type = 0;private int size = 12;private Font customFont = new Font(”宋体“, Font.ITALIC, 12);private boolean okpressed = false;private boolean cancelpressed = false;private JLabel lbl1 = new JLabel(”字体:“);private JLabel lbl2 = new JLabel(”字形:“);private JLabel lbl3 = new JLabel(”大小:“);private JTextArea area;String[] zx = { ”常规“, ”加粗“, ”斜体“, ”基线“ };String[] dx = {”8“ , ”9“ , ”10“, ”12“, ”14“, ”15“, ”16“, ”18“,”20“, ”21“, ”22“, ”24“, ”26“, ”28“, ”30“, ”36“,”48“, ”54“,”72“ , ”89“};JLabel lbl = new JLabel(”字体样式Style“);private JComboBox cb1, cb3 = new JComboBox(dx), cb2 = new JComboBox(zx);private String[] zt;

public FontDialog(Frame owner, String title, boolean modal){

init();fontdialog = new Dialog(owner, title, modal);fontdialog.setLocation(owner.getLocation());fontdialog.setLayout(new FlowLayout());fontdialog.setSize(getWidth(), getHeight());fontdialog.add(lbl1);fontdialog.add(cb1);fontdialog.add(lbl2);fontdialog.add(cb2);fontdialog.add(lbl3);fontdialog.add(cb3);fontdialog.add(okButton);fontdialog.add(cancelButton);fontdialog.add(area);fontdialog.setResizable(false);fontdialog.setAlwaysOnTop(true);cancelButton.addActionListener(new fontListener());okButton.addActionListener(new fontListener());fontdialog.addWindowListener(new fontListener());

cb1.addItemListener(new ItemListener(){ // public void itemStateChanged(ItemEvent event){ //获取选择用户的字体类型

name =(String)event.getItem();setCustomFont(new Font(name, type, size));} });

cb2.addItemListener(new ItemListener(){ // public void itemStateChanged(ItemEvent event){ //获取选择用户的字形

String s =(String)event.getItem();if(s.equals(”常规“)){ type = Font.PLAIN;setCustomFont(new Font(name, type, size));} else if(s.equals(”加粗“)){ type = Font.BOLD;

字体动作 添加监听器字形动作 添加监听器 setCustomFont(new Font(name, type, size));} else if(s.equals(”斜体“)){ type = Font.ITALIC;setCustomFont(new Font(name, type, size));} else { type = Font.CENTER_BASELINE;setCustomFont(new Font(name, type, size));} } });

cb3.addItemListener(new ItemListener(){ //大小动作 public void itemStateChanged(ItemEvent event){ //添加监听器获取选择用户的字号大小

size =(new Integer((String)event.getItem()).intValue());setCustomFont(new Font(name, type, size));} });

}

public Font showFontDialog(){ fontdialog.setVisible(true);if(okpressed){ return getCustomFont();} else { return customFont;} }

private void init(){ //初始化 okButton = new JButton(”确定“);cancelButton = new JButton(”取消“);GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();zt = ge.getAvailableFontFamilyNames();cb1 = new JComboBox(zt);cb1.setMaximumRowCount(6);area = new JTextArea(6, 30);cb3 = new JComboBox(dx);cb3.setMaximumRowCount(6);okButton.setFocusable(true);area.setEditable(false);area.setText(new Date().toString());area.setBorder(new TitledBorder(”字体样式"));}

public void setWidth(int width){ this.width = width;}

public void setHeight(int height){ this.height = height;}

private int getWidth(){ return(this.width);}

private int getHeight(){ return(this.height);}

private void setCustomFont(Font customFont)//{ this.customFont = customFont;area.setFont(customFont);area.revalidate();}

public String toString(){ return FontDialog.class.toString();}

设置字体 public Font getCustomFont()//获取字体 { return(this.customFont);}

private class fontListener extends WindowAdapter implements ActionListener //监听事件类 { public void windowClosing(WindowEvent e){ fontdialog.dispose();}

public void actionPerformed(ActionEvent e){ if(e.getSource()== cancelButton){ fontdialog.dispose();cancelpressed = true;} else if(e.getSource()== okButton){ okpressed = true;setCustomFont(new Font(name, type, size));fontdialog.dispose();} } } }

第五篇:java实验报告

学 生 实 验 报 告 册

2013——2014学年第1学期

项目名称: Java Web 学院: 信电

班级:

11计算机科学与技术一班 学号: 155140007 姓名: 伍振东 指导教师: 李竹林 完成时间: 2013/9/28

一、实验要求

1.用HTML语言编写如下样式的网页

2.可以用Dreamweaver,推荐手动编写HTML带代码

3.图片从清华大学的网站自己取得。http://www.xiexiebang.com“>

下载JAVA实验报告心得word格式文档
下载JAVA实验报告心得.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    JAVA实验报告

    实验报告一、 实验目的 巩固复习课上所讲内容,进一步熟悉面向对象编程。 二、 实验内容 编写程序求点到原点的距离三、 程序清单及运行结果 abstractclass Distance { abstra......

    JAVA聊天室实验报告

    Java聊天室实验报告 班 级:学 号:姓 名: ****** ******** *** 目录: 一、实验目的.......................................................3 二、所需技术 ......................

    Java实验报告电子稿(汇编)

    课程名称: 学生学号:学生姓名: 所属院部:指导教师: 学生实验报告 (理工类) JAVA程序设计专业班级: 20 15——20 16学年第2学期金陵科技学院教务处制 实验项目名称:JAVA编程基础实验......

    java实验报告4

    实验项目名称:实验4 基于Socket的网络编程 【实验目的】 1、 理解Java的基于套接字的网络通信原理。 2、 理解客户端和服务器的概念。 3、 学习使用套接字实现客户端和服务......

    java实验报告5范文合集

    广东工业大学实验报告 学院 专业 班学号姓名 成绩评定_______ 实验5 题目继承与接口实验 课程名称Java与面向对象程序设计 一.实验目的 (1)学习类的继承、子类在对象中调用......

    Java上机实验报告

    Homework3实验报告 一、实验目的与要求 1、掌握Java中类和接口的基本知识; 2、继承的基本知识; 3、集合的基本操作 二、实验内容 1.PIMCollection 类 创建一个可以管理PIMEnti......

    java实验报告(精选五篇)

    中 南 民 族 大 学 实 验 报 告 2010—2011第二学期 课程名称: Java程序设计院系:计算机科学学院年级: 2009 专业:计算机科学与技术大班 学号: 09061060 姓 名: 李亚巧 指......

    JAVA实验报告册范文合集

    《面向对象程序设计》实验报告与习题册 2013 / 2014 学年 第1学期 系 别 计算机科学与技术系 专 业 班 级 姓 名计算机软件 软件一班 罗晓薇朱强 指导教师 目 录 实验......