Java实验四
- 格式:pdf
- 大小:388.99 KB
- 文档页数:7
实验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面向对象程序设计实验报告序号:实验三实验报告代码清单2.2)import java.util.Scanner;public class RightTriangle {public static void main (String[] args){double side1, side2,num; // lengths of the sides of a right triangle double hypotenuse; // length of the hypotenuseScanner scan = new Scanner(System.in);// Get the lengths of the sides as inputSystem.out.println ("Please enter the lengths of the two sides of " + "a right triangle (separate by a blank space): ");System.out.print ("side1 = ");side1 = scan.nextDouble();System.out.print ("side2 = ");side2 = scan.nextDouble();num = side1*side1 + side2*side2;hypotenuse = Math.sqrt(num);System.out.println ("Length of the hypotenuse: " + hypotenuse);}}4.import java.util.Random;public class Dice{public static void main (String[] args){Random generator = new Random();int num1,num2;System.out.print("num1 = ");num1 = generator.nextInt(6) + 1;System.out.println(num1);System.out.print("num2 = ");num2 = generator.nextInt(6) + 1;System.out.println(num2);System.out.println("The total of two numbers = " + (num1 + num2));}}6.import java.util.Scanner;import java.text.NumberFormat;import java.text.DecimalFormat;public class Deli{// ---------------------------------------------------// main reads in the price per pound of a deli item// and number of ounces of a deli item then computes// the total price and prints a "label" for the item// --------------------------------------------------public static void main (String[] args){final double OUNCES_PER_POUND = 16.0;double pricePerPound; // price per pounddouble weightOunces; // weight in ouncesdouble weight; // weight in poundsdouble totalPrice; // total price for the itemScanner scan = new Scanner(System.in);NumberFormat money = NumberFormat.getCurrencyInstance();DecimalFormat fmt = new DecimalFormat("0.###");// Declare money as a NumberFormat object and use the// getCurrencyInstance method to assign it a value// Declare fmt as a DecimalFormat object and instantiate// it to format numbers with at least one digit to the left of the// decimal and the fractional part rounded to two digits.// prompt the user and read in each inputSystem.out.println ("Welcome to the CS Deli!!\n ");System.out.print ("Enter the price per pound of your item: ");pricePerPound = scan.nextDouble();System.out.print ("Enter the weight (ounces): ");weightOunces = scan.nextDouble();// Convert ounces to pounds and compute the total priceweight = weightOunces / OUNCES_PER_POUND;totalPrice = pricePerPound * weight;// Print the label using the formatting objects// fmt for the weight in pounds and money for the pricesSystem.out.println("***** CS Deli *****");System.out.println();System.out.println("Unit Price: ¥"+pricePerPound +" per pound");System.out.println("Weight: "+weight +" pounds");System.out.println("Total: ¥" + totalPrice);}}。
任课教师:《JAVA程序设计》()实验报告学号:姓名:班级:实验指导书实验名称:图形用户界面实验学时安排:2实验类别:综合设计型实验实验要求:1人1组 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄一、实验目的1、掌握Java GUI主要的类及方法的创建及使用。
2、掌握Java 各种布局管理器的创建及使用。
3、掌握Java 对GUI的监听机制原理及主要GUI的监听接口。
4、通过试验,能够应用GUI类及布局管理器设计能够相应用户请求简单的图形界面二、实验内容P156 习题21)要求1: 在界面要求的基础上,增加菜单,包含菜单有-文件(打开保存退出等) 编辑(字体-粗体斜体颜色-红绿蓝) 帮助2:使用swing控件:JTextField, JComboBox, JCheckBox, JRadioButton3.事件响应(1)点击确定按钮时,将选择的个人姓名省份等信息显示在文本框内2)步骤•1)实现接口implements ActionListener•2) 设置确定按钮的监听者 buttonok.addActionListener(this);•3)动作实现•public void actionPerformed(ActionEvent e){ .. …. }•1)接口 JTextField 内容改变-DocumentListener•2)监听者 Document dt;•dt = textname.getDocument();•dt.addDocumentListener(this);•3) public void changedUpdate(DocumentEvent e)• {•if(e.getDocument()==dt){ }• }•public void insertUpdate(DocumentEvent e)• {•if(e.getDocument()==dt){ }• }•public void removeUpdate(DocumentEvent e) { }•JComboBox, JCheckBox, JRadioButton 选项内容改变- ItemListener public void itemStateChanged(ItemEvent e){if(e.getSource()==combopro)if(e.getStateChange()==ItemEvent.SELECTED)str=str+combopro.getSelectedItem().toString();……}三、程序代码package E26.test;import java.awt.*;import java.awt.event.*;import javax.swing.*;class aa extends JFrame implements ActionListener{Button b1,b2;TextArea textarea1;JTextField text1=new JTextField(5);JComboBox provincechoice;JCheckBox c[];String habits[]={"体育","音乐","美术"};ButtonGroup group;JRadioButton f,g;aa(String s){super(s);setSize(290,440);setLocation(120,120);setVisible(true);JMenuBar menubar;JMenu file,edit,font,color;JMenuItem jopen,jsave,jout,bold,italic,red,green,blue;menubar=new JMenuBar();file=new JMenu("文件");jopen=new JMenuItem("打开");jsave=new JMenuItem("保存");jout=new JMenuItem("退出");file.add(jopen);file.add(jsave);file.add(jout);edit=new JMenu("编辑帮助");font=new JMenu("字体");bold=new JMenuItem("粗体");italic=new JMenuItem("斜体");color=new JMenu("颜色");red=new JMenuItem("红色");green=new JMenuItem("绿色");blue=new JMenuItem("蓝色");font.add(bold);font.add(italic);color.add(red);color.add(green);color.add(blue);edit.add(font);edit.add(color);menubar.add(file);menubar.add(edit);setJMenuBar(menubar);validate();setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);Container contenePane=this.getContentPane();FlowLayout flow=new FlowLayout();flow.setAlignment(FlowLayout.LEFT);flow.setHgap(8);flow.setVgap(8);GridLayout grid=new GridLayout();Box firstline,secondline,thirdline,basebox;firstline=Box.createVerticalBox();firstline.add(new Label("姓名:"));firstline.add(text1);firstline.add(new Label("省份:"));String p[]={"湖南","浙江","江西"};provincechoice=new JComboBox<String>(p);provincechoice.setSelectedIndex(1);provincechoice.addActionListener(this);firstline.add(provincechoice);firstline.setLayout(flow);firstline.validate();secondline=Box.createVerticalBox();secondline.add(new Label("爱好:"));c=new JCheckBox[3];for(int i=0;i<3;i++){c[i]=new JCheckBox(habits[i]);add(c[i]);}secondline.add(new Label("性别:"));group=new ButtonGroup();f=new JRadioButton("男");g=new JRadioButton("女");group.add(f);group.add(g);secondline.add(f);secondline.add(g);secondline.setLayout(flow);secondline.validate();basebox=Box.createHorizontalBox();basebox.add(firstline);basebox.add(secondline);contenePane.add(basebox);textarea1=new TextArea(10,30);add(textarea1);b1=new Button("确定");b2=new Button("取消");add(b1);add(b2);b1.addActionListener(this);b2.addActionListener(this);contenePane.setVisible(true);}public void actionPerformed(ActionEvent e){if(e.getSource()==b1){String n=text1.getText();String x=provincechoice.getSelectedItem().toString();String y[]=new String[3];String s;if(group.getSelection()==f.getModel())s="男";elses="女";int j=0,k=0;for(j=0,k=-1;j<3;j++){if(c[j].isSelected()){k++;y[k]=habits[j];}}textarea1.append("姓名:"+n+"\n\n"+"省份:"+x+"\n\n"+"爱好:");for(j=0;j<3;j++){while(y[j]!=null){textarea1.append(y[j]+" ");break;}}textarea1.append("\n\n"+"性别:"+s+"\n\n");}if(e.getSource()==b2){textarea1.setText("");}}}public class awt {public static void main(String args[]){Firstwindows win=new Firstwindows("简单窗口");}}四、运行结果与测试分析五、心得体会本次实验由书上个例子中找相似的,完成最终设计,比较麻烦。
面向对象程序设计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个字符为止的内容。
课程实验报告
的文件对象,然后对str中的每个对象调用isFile()方法判断是否是文本文件,并计数输出
(4)在外层使用for循环对每个文本文件遍历行数
(5)在内层创建FileReader类的对象reader1和BufferedReader类的对象reader2,设置行数rows=0,分别读每个文本文件计算行数
调试过程及实验结果1. 2.
总结通过第一个实验我熟悉了BufferedReader、BufferedWriter等流类的相关使用方法,掌握了向文件中读写数据的基本步骤;通过第二个实验我掌握了Java File类相关方法的调用和使用,熟悉对文本文件和非文本文件基本方法的使用。
附录(手抄源程序清单,对关键步骤需要添加注释,写在报告背面即可,无需附页,严禁打印)
*注意:
--雷同无效,禁止抄袭;
--A4纸单面打印,左侧装订,2个钉;
--以班为单位,各班负责人收齐并按学号由小到大顺序排序后上交;。
班级计科1201 姓名:学号 6 成绩实验4—— Java的输入机制I 实验目的(1). Java如何操作文件(2).了解Java中的输入机制;如何从控制台输入,如何用InputStream和Reader显示文件中的内容。
II 实验内容(1). 递归遍历目录,显示其中的文件名。
a.源代码b.package com.fileTest;c.d.import java.io.File;e.f.public class BianLi { // 遍历目录,显示文件的名字g.h./**i.* @param argsj.*/k.public static void main(String[] args) {l.m.File f = new File("D:/360安全浏览器下载"); //创建一个File对象n.listChids(f); //调用一个列出目录的方法o.p.}q.r.s.t.public static void listChids(File f){u.v.System.out.println(f.getName());w.x.if(!f.isDirectory()){ //如果不是目录,退出y.z.return ;aa.}else{bb.cc.File[] fs = f.listFiles();dd.for(int i=0;i<fs.length;i++){ee.ff.listChids(fs[i]);gg.hh.}ii.}jj.}kk.}ll.运行截图(2).用InputStream的子类读入一个英文文本文件,并用System.out显示其中的内容。
a.源代码b.package com.fileTest;c.d.import java.io.*;e.f.public class Fileinput {g.h./**i.* @param argsj.*/k.public static void main(String[] args)throws IOExceptionl.{m.// TODO Auto-generated method stubn.o.String file = "src/abc.java"; // 英文本文件p.Fileinput d = new Fileinput(); //实列化对象q. d.readFile(file); // 调用readFile 方法r.s.}t.u.public void readFile(String fileName) throws IOException{v.InputStream in = new FileInputStream(fileName); // 创建字节流对象w.x.// TODO Auto-generated method stuby.try{z.int b = 0 ;aa.while(true)bb.{cc. b = in.read();//得到内容判断是否结束dd.if(b==-1)ee.break;ff.System.out.print((char)b);// 得到内容进行处理,转换成字符型输出gg.hh.}ii.}finally{jj.if(in!=null)kk.in.close(); //关闭流ll.}mm.nn.}oo.pp.}qq.运行截图rr.(3).用Reader的子类读入一个字符文件,并用System.out显示其中的内容。
信息科学与工程学院《Java程序设计》上机实验报告专业班级姓名学号实验时间指导教师成绩test3[1]=100;} catch (NullPointerException e) {主要实验记录及个人小结(包括部分实验源程序、调试结果及实验结果分析等)2.编写程序实现如下功能:计算两个数之和,参与求和运算的每个数的值都必须在10-20之间,当任意一个数超出范围时,抛出自己的异常。
1)实验源程序:public class SelfException{public static void selfExceptionTest(int a,int b) throws NumberRangeException{int answer;if(( a>10& b <20)&( a>10& b<20)){ answer=a+b;System.out.println("两数之和为:"+answer);}e lsethrow new NumberRangeException("错误");}public void manager(){try{selfExceptionTest(55,100);}catch(NumberRangeException e){System.out.println("输入数值超出范围,应该为10-20之间的整数");}}public static void main(String args[]){SelfException s=new SelfException();s.manager();}}class NumberRangeException extends Exception{public NumberRangeException(String message){super(message);}}2)调试结果:public static void main(String[] args) throws MyException{ String s="";BufferedReaderin=new BufferedReader(new InputStreamReader(System.in));System.out.print("请输入各边边长");try {s=in.readLine();} catch (IOException e1) {e1.printStackTrace();}int i;double[] a=new double[3];StringTokenizer st=new StringTokenizer(s);for(i=0;i<3&&st.hasMoreTokens();i++){a[i]=Double.parseDouble(st.nextToken());}try{Area n=new Area();n.test(i,a);}catch(MyException e){System.out.println("输入错误参数");}}}2)调试结果:。
武汉工程大学计算机科学与工程学院实验报告[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 框架,通过这个例子学习如何创建一个简单的图形用户界面。