JAVA实验4
- 格式:pdf
- 大小:198.86 KB
- 文档页数:10
实验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 中,方法中的参数传递可以分为传值调用或对象方法调用等方式。
面向对象程序设计A(Java)实验报告实验名称:GUI实验实验类型:设计型指导教师:**专业班级:信安1205*名:**学号:**********实验地点:东六E501实验成绩:日期:2016年11月12日实验四 GUI实验一、实验目的练习Java图形用户界面设计、界面布局、事件设计方法,熟悉GUI 程序设计的基本技术、基本Widget的使用、GUI设计用户接口的方法二、实验内容设计一个类似Windows计算器的Application应用程序三、实验设计1、采用Java Application方式建立应用程序Calculator的框架2、仿照Windows计算器,实现界面设计。
将contentPane分成两个jPanel(borderlayout),其中一个放置文本框,另一个继续划分为两部分,分别以FlowLayout和GridLayout的形式放置按钮。
设置按钮、文本框等的Text值及相应属性的修改。
3、设计方法:设两个变量value1、value2分别存储运算符左右两个操作数,设置标识符flag,初值为0,此时输入的数传给value1,当按下+-*\时设置flag为1,此时输入的数字传给value2;按下”=”时,根据value1,value2及op值进行计算并输出至文本框4、设计方法调节程序bug5、点击事先设计的计算器数字按钮,显示框出现相应数字;点击“+-*/”时,显示框出现相应字符;输入计算式后再输入“=”,显示框出现计算结果,基本实现Windows计算器功能四、实验过程1、采用Java Application方式建立应用程序框架2、仿照Windows计算器,利用多种布局方式实现界面设计3、组装操作数和运算符,完成简单的整数加、减、乘、除运算4、通过getTxt()方法来获得显示框txt内容,setTxt()方法把字符显示在Txt框内;通过Integer.parseInt(String)实现字符串到整型的转换,String.valueOf(Int)实现整型到字符串的转换。
成绩:大连工业大学艺术与信息工程学院《Java技术》实验报告实验四专业名称:计算机科学与技术班级学号:2009030236学生姓名:普辉指导老师:姜绍俊实验日期:2011.07.1一、实验目的:熟悉Java基本的java编程,了解java语言中构造方法的使用。
掌握按钮的使用。
掌握继承性。
二、实验内容:import java.awt.BorderLayout;import java.awt.Container;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;class J_ActionListener implements ActionListener{int m_count = 0;public void actionPerformed(ActionEvent e){JButton b= (JButton)e.getSource( );b.setText("单击" + (++m_count) + "次");} // 方法actionPerformed结束} // 类J_ActionListener结束public class J_Button1 extends JFrame{public J_Button1( ){super( "动作事件例程" );Container c = getContentPane( );JButton b = new JButton("单击0次");J_ActionListener a = new J_ActionListener( );b.addActionListener(a);c.add(b, BorderLayout.CENTER);} // J_Button1构造方法结束public static void main(String args[ ]){J_Button1 app = new J_Button1( );app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);app.setSize( 100, 80 );app.setVisible( true );} // 方法main结束} // 类J_Button1结束三、实验步骤:1,编写java源代码2,运行java编译环境3,运行结果四、实验结果:五、实验总结:通过对java的学习,我了解了运行java程序的基本步骤。
实验报告_实验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个字符为止的内容。
实验课程名称:Java语言程序设计A第二部分:实验过程记录(可加页)(代码、运行结果、实验中出现的问题及解决过程)修改后代码如下:import java.util.*;class ExceptionDemo{public static void main(String[] args) {try {Scanner scanner = new Scanner(System.in);System.out.print("Enter a interger:");int number = scanner.nextInt();System.out.println("The number entered is:" + number);} catch (InputMismatchException e) {System.err.println("输入有误,请重新输入一个整型数据!");new ExceptionDemo().main(args);;}}}运行结果如下:教师签字__________第三部分结果与讨论(可加页)一、实验结果分析(包括数据处理、影响因素讨论、综合分析和结论等)首先运行题目中给出的代码,当输入的数据不是整形时,程序抛出InputMismatchException错误并终止,之后用try……catch捕捉并处理该错误,在catch块中输出错误提示并且重新调用main方法,已达到程序正常运行直达用户输入整数后才退出的目的。
实验中通过main函数的回调,实现了和使用循环处理一样的效果,也可以通过for循环或者do……while循环实现同样的效果,例如以下用for循环的实现:import java.util.*;class ExceptionDemo{public static void main(String[] args) {for (; ; ) {try {Scanner scanner = new Scanner(System.in);System.out.print("Enter a interger:");int number = scanner.nextInt();System.out.println("The number entered is:" + number);// break;} catch (Exception e) {System.err.println("输入有误,请重新输入一个整型数据!\n");}}}}运行效果为:二、小结、建议及体会编程的时候要多考虑一些影响因素,多思考几种实现方法,在各种方法中寻找最优的方案,同时,对于碰到的问题,不要忽略,要多多思考本质的原因,避免下次犯同样的错误。
实验四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文件。
武汉工程大学计算机科学与工程学院实验报告[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 框架,通过这个例子学习如何创建一个简单的图形用户界面。
一、实验目的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语言进阶》实验报告(4)MVC in GUI (GUI中的MVC模式)学院:计算机与信息学院专业:计算机科学与技术学号:姓名:指导老师:一、实验目的:1. 掌握MVC设计模式的概念。
2. 掌握应用MVC模式开发图形用户界面应用程序的方法。
二、实验内容:(Creating a student table ) Create a table for student records. Each record consistsof name, birthday, class status, in-state, and a photo, as shown in Figure 1. The name is of the String type; birthday is of the Date type; class status is one of the following five values: Freshman, Sophomore, Junior, Senior, or Graduate; in-state is a boolean value indicating whether the student is a resident of the state; and photo is an image icon. Use the default editors for name, birthday, and in-state. Supply a combo box as custom editor for class status..三、实验要求:1、认真执行每一个步骤的,并作好记录。
2、实验报告中给出配置的详细步骤和重要的截图。
五、实验步骤:源代码:package four;import javax.swing.*;import javax.swing.table.*;import java.awt.*;import ponent;import java.awt.EventQueue;import java.util.Date;import javax.swing.table.DefaultTableCellRenderer;import javax.swing.table.DefaultTableModel;import javax.swing.table.TableCellEditor;import javax.swing.table.TableColumn;import javax.swing.text.html.ImageView;public class jtable extends JApplet {private JFrame frame;private JTable table;private JScrollPane jstable;/*** Launch the application.*/public static void main(String[] args) {EventQueue.invokeLater(new Runnable() {public void run() {try {jtable window = new jtable();window.frame.setVisible(true);} catch (Exception e) {e.printStackTrace();}}});}/*** Create the application.*/public jtable() {initialize();}/*** Initialize the contents of the frame.*/private void initialize() {frame = new JFrame();frame.setBounds(100, 100, 450, 300);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.getContentPane().setLayout(null);table = new JTable();Object[][] da=new Object[][]{{"jeffF.smith","sop 29 1998","freshman", null, null},{"johnF.kay", "sop 29 1997", "freshman", null,null},{"johnF.kay", "sop 29 1998","freshman", null,null},{"jeffF.smith","sop 29 1998", "freshman", null, null},{"jeffF.smith", "sop 29 1998", "freshman", null,null},};//一次性设置好最后一列的图片da[0][4] = new ImageIcon("image/z1.jpg");da[1][4] = new ImageIcon("image/z1.png");da[2][4] = new ImageIcon("image/z1.png");da[3][4] = new ImageIcon("image/z1.jpg");da[4][4] = new ImageIcon("image/z1.jpg");table.setModel(new DefaultTableModel(da, new String[] {"name", "birthday", "class status", "in-state", "photo"}){//设置表格类型Class[] columnType = new Class[] { Object.class, Object.class, Object.class, Boolean.class, Object.class };public Class getColumnClass(int columnIndex) {return columnType[columnIndex];}//设置可否被修改boolean[] columnEditables = new boolean[] {false, false, true, true, false};public boolean isCellEditable(int row, int column) {return columnEditables[column];}});//为第五列放置图片table.getColumnModel().getColumn(4).setCellRenderer(new ImageRenderer());//create acomboboxJComboBox jc=new JComboBox();jc.addItem("freshman");jc.addItem("sophomore");jc.addItem("junior");jc.addItem("senior");jc.addItem("graduate");//set combobox as the editor for the publisher columnTableColumn pC=table.getColumn("class status");pC.setCellEditor(new DefaultCellEditor(jc));jstable=new JScrollPane(table);//和存放顺序有关table.setBounds(10, 10, 401, 241);jstable.setBounds(10, 10, 401, 241);table.setRowHeight(60);frame.getContentPane().add(jstable);}}class ImageRenderer extends DefaultTableCellRenderer{/* 重写表现列的方法,显示列中的图片*/public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,boolean isFocused, int row, int column) {setIcon(null);setBorder(null);if (value instanceof Icon)this.setIcon((Icon) value);return this;}}class TableModel extends DefaultTableModel{public TableModel(){}public TableModel(Object[][] data,Object[] columnNames){super(data,columnNames);}public Class getColumnClass(int column){return getValueAt(0,column).getClass();}public boolean isCellEditable(int row,int column){Class columnClass =getColumnClass(column);return columnClass !=getColumnClass(column)&& columnClass != Date.class;}}运行结果:。