java_实验四
java编程实验报告
java编程实验报告Java编程实验报告引言:Java是一种广泛应用于软件开发领域的高级编程语言,具有跨平台、面向对象、安全性高等特点。
本篇文章将介绍我在Java编程实验中的实践和收获。
实验一:Hello World程序在本实验中,我学习了如何使用Java编写一个简单的Hello World程序。
通过这个实验,我了解了Java的基本语法和程序结构。
在编写过程中,我发现Java的语法规范相对严格,需要注意语句的结束符号和代码的缩进。
通过运行程序,我成功输出了"Hello World"这个简单的字符串,这让我对Java编程的基本流程和语法有了更深入的了解。
实验二:变量与运算符在本实验中,我学习了Java中的变量和运算符的使用。
通过编写程序,我实现了对不同类型的变量进行声明和赋值,并进行基本的运算操作。
在这个过程中,我发现Java的变量需要先声明后使用,而且在进行运算时需要注意数据类型的匹配。
通过这个实验,我对Java中的变量和运算符有了更深入的理解。
实验三:条件语句与循环结构在本实验中,我学习了Java中的条件语句和循环结构的使用。
通过编写程序,我实现了对不同条件进行判断,并根据不同的条件执行相应的操作。
同时,我还学习了循环结构的使用,通过循环语句实现了对一段代码的重复执行。
在这个实验中,我发现条件语句和循环结构是Java编程中非常重要的部分,能够帮助程序实现更复杂的逻辑。
实验四:数组和字符串在本实验中,我学习了Java中数组和字符串的使用。
通过编写程序,我实现了对数组和字符串的声明、赋值和操作。
在这个过程中,我发现Java中的数组和字符串是一种非常方便的数据结构,能够帮助程序处理大量的数据。
通过这个实验,我对Java中数组和字符串的使用有了更深入的了解。
实验五:面向对象编程在本实验中,我学习了Java中的面向对象编程的基本概念和使用。
通过编写程序,我实现了对类的定义、对象的创建和方法的调用。
java实验报告4
实验4 Java 语言面向对象基础编程一.实验目的(1)通过编程和上机实验理解Java语言是如何体现面向对象编程基本思想(2)如何创建类和对象二、实验要求1、编写一个体现面向对象思想的程序;2、编写一个创建对象和使用对象的方法的程序;3、编写体现构造方法重载的程序;三.实验内容1、定义类创建类对象设计类来描述真实客观世界中的事物,使用类的成员变量来表示事物的属性和状态,使用类的成员方法来提供对成员变量的访问或修改(1)程序功能:设计一个用来描述汽车的类,使用类的非静态成员变量来表示汽车的车主姓名、当前的速率和当前方向盘的转向角度,使用类的非静态成员方法来表示改变汽车的速率和停车两个操作。
源代码:(自己编写)创建类的对象,使用对象的方法(类的非静态方法)来访问或修改对象的变量(类的非静态变量)(1)创建上面第一步的类的对象,在调用类的构造函数时指定对象的变量的初始值,以后再使用对象的方法来访问或修改对象的变量的值。
源代码:2、构造方法重载构造方法的名称和类同名,没有返回类型。
尽管构造方法看起来和一般的成员方法没有差别,但它不是方法,也不是类的成员。
因此,构造方法不能直接调用,只能由new 操作符调用。
构造方法对于类是十分重要的,对象的初始化任务要靠构造方法来完成。
重载构造方法的目的是提供多种初始化对象的能力,使程序员可以根据实际需要选用合适的构造方法来初始化对象。
源代码如下:class RunDemo {private String userName, password;在该处编写不带参数的构造方法在该处编写带一个参数的构造方法在该处编写带两个参数的构造方法}public class EXP2 {public static void main(String[] args) {//使用不同的构造方法进行对象的初始化}}3、调用方法时参数传递的练习在Java 中,方法中的参数传递可以分为传值调用或对象方法调用等方式。
Java实验4
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实验四报告
任课教师:《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("简单窗口");}}四、运行结果与测试分析五、心得体会本次实验由书上个例子中找相似的,完成最终设计,比较麻烦。
西南科技大学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实验四
成绩:大连工业大学艺术与信息工程学院《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程序的基本步骤。
Java实验四
实验四:常用系统类库(2学时)预备知识Java的预定义类Java的API中包含大量预定义类,这些类被组织在不同的包中,编程时常用到的包是Java 语言核心包java.1ang和Java实用工具包java.util。
(1)Java语言核心包java.1ang提供了Java语言进行编程的许多基础类如Math类、基本类型的包装器类、处理日期和时间的Date类和Calendar类。
·Math类。
Math类是Java.1ang包中提供的一个执行常用数学计算的类,该类中包含着许多常用的数学计算方法如求绝对值、三角函数等。
Math类中所提供的都是静态方法,因此可以直接通过类名来使用。
·基本类型的包装器类。
Java能将基本数据类型封装起来形成对象,从而产生出一组基本类型的包装器类。
它们分别是Character、Byte、Short、Integer、Long、Float、Double和Boolean类。
所有数值类型包装类都继承自java.1ang包中的另一个类Number,它是数值类的超类。
(2)Java.util包是Java的实用工具类库,在这个包中有许多实用的工具类和数据结构类,为编程提供了很大的方便,如日历类Calendar、数组类Vector。
·日历类Calendar。
Calendar类是用来处理日期和时间的,可以用Calendar类来获取和设置当前的日期和时间。
Calendar类中提供许多常量字段,如星期、月份、年份、小时、分、秒等。
通过Calendar 类的众多方法就可以对这些数据字段进行计算和操控。
·向量类Vector。
Vector类是java.util包中的一个常用的数据结构类,它代表着一个动态对象数组,该数组的大小是可变的,可根据需要增加或减少容量,其次,该数组可以用来存放任何对象。
可以让Vector数组中存放Object类的引用变量以使它可以指向任何对象。
Java程序设计实验报告4
课程实验报告
的文件对象,然后对str中的每个对象调用isFile()方法判断是否是文本文件,并计数输出
(4)在外层使用for循环对每个文本文件遍历行数
(5)在内层创建FileReader类的对象reader1和BufferedReader类的对象reader2,设置行数rows=0,分别读每个文本文件计算行数
调试过程及实验结果1. 2.
总结通过第一个实验我熟悉了BufferedReader、BufferedWriter等流类的相关使用方法,掌握了向文件中读写数据的基本步骤;通过第二个实验我掌握了Java File类相关方法的调用和使用,熟悉对文本文件和非文本文件基本方法的使用。
附录(手抄源程序清单,对关键步骤需要添加注释,写在报告背面即可,无需附页,严禁打印)
*注意:
--雷同无效,禁止抄袭;
--A4纸单面打印,左侧装订,2个钉;
--以班为单位,各班负责人收齐并按学号由小到大顺序排序后上交;。
河南工业大学java实验四
班级计科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程序设计》上机实验报告 实验四 异常类的定义及处理
信息科学与工程学院《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)调试结果:。
java实验四
实验四异常类的定义及处理编写程序实现如下功能:生成并捕获到NegativeArraySizeException和IndexOutOfBoundsException类型的异常,并显示捕获到的异常信息。
然后在此基础上生成并捕获到NullPointerException类型的异常,并显示捕获到的异常信息。
实验步骤1) 编写程序实现如下功能:生成并捕获到NegativeArraySizeException和IndexOutOfBoundsException类型的异常,并显示捕获到的异常信息。
然后在此基础上生成并捕获到NullPointerException类型的异常,并显示捕获到的异常信息。
步骤(1):编写一个包含main方法的Application类TestException,然后定义一个方法 void arraySize(){……}生成并捕获NegativeArraySizeException异常。
步骤(2):添加一个方法 void outofBound(){……}生成并捕获IndexOutOfBoundsException 异常。
步骤(3):添加一个方法 void nullPointer(){……}生成并捕获IndexOutOfBoundsException 异常。
步骤(4):在main方法中分别调用以上三个方法。
步骤(5):将文件保存为TestException.java,然后编译、调试应用程序。
步骤(6):将outofBound()方法中捕获异常的语句注释掉,重新编译程序,看看会不会有什么语法错误?如果没错误,执行程序看结果有什么不同?步骤(7):将array方法重新定义为如下形式: void arraySize() throws NegativeArraySizeException{……} 然后修改arraySize方法中捕获NegativeArraySizeException异常的语句执行部分。
java_实验四
武汉工程大学计算机科学与工程学院实验报告[4]一、实验目的1)了解Java.awt包及Swing的新增特性。
2)了解Java系统图形用户界面的基本工作原理和界面设计的步骤。
3)了解图形用户界面的事件响应机制。
4)了解图形用户界面各种常用的基本组件的使用方法及其事件响应。
5)掌握Java常用组件的应用6)掌握图形用户界面各种布局策略的设计与使用二、实验要求1)创建一个简单的图形用户界面。
2)使用Java类库中提供的组件,并添加到图形用户界面中。
3)通过Java事件处理机制,实现与用户的交互信息。
4)练习使用布局管理器5)使用Java类库中提供的组件,并添加到图形用户界面中6)通过Java事件处理机制,实现与用户的交互信息三、实验内容对一个优秀的应用程序来说,良好的图形用户界面是必不可少的。
因为只有通过图形界面,用户才能够与程序友好的交互。
缺少良好的图形用户界面,将会给用户理解和应用程序带来很多不便。
创建一个完整的图形用户界面的应用程序大致流程如下:1)引用需要的包和类。
2)设置一个顶层的容器。
3)根据需要为容器设置布局管理器或使用默认布局管理器。
4)将组件添加到容器内,位置自行设计。
5)为响应事件的组件编写事件处理代码。
下面我们先建立一个简单的图形用户界面,然后通过合适的布局管理器,将各种常用组件添加到图形用户界面中,实现与用户的交互信息。
1. 创建简单的图形用户界面(1)创建简单的 Frame 框架在 AWT 库中,对应于框架的类是 Frame,在 Swing 库中,相应的类是 JFrame。
JFrame 类扩展了 Frame 类。
大部分 ATWT 组件在 Swing 中都有等价的组件,它们在表示形式上差一个“J”。
框架是一个容器,可以在这个容器中放入其他一些图形用户界面组件,如按钮、菜单等,从而组成一个功能完善的程序。
下面的例子是建立一个 Frame 框架,通过这个例子学习如何创建一个简单的图形用户界面。
Java实验四报告
一、实验目的1.掌握Java语言中继承和多态的相关概念2.掌握Java程序设计中继承和多态机制的使用3.掌握Java语言中接口和包的概念及使用。
二、实验内容1.题目:1.继承多态综合练习1(1)建立一个Java抽象类Drink,应当:①声明一个抽象方法taste(),该方法负责输出饮料的味道;②声明int型常量来代表不同的饮料类型(咖啡、啤酒、牛奶),如:③声明静态方法getDrink(int drinkType),根据传入的参数创建不同的饮料对象,并返回该对象,建议使用switch语句。
(2)建立Drink的子类:①分别建立Drink的子类:Coffee(咖啡类),Beer(啤酒类),Milk(牛奶类);②实现taste()方法,要求在控制台打印各自的味道特征。
(3)建立Test测试类,测试以上内容的正确性①编写main方法,输入要新建的饮料类型。
②调用Drink类的getDrink方法,获得相应的饮料对象。
然后调用该饮料对象的taste()方法,输出该饮料的味道。
②编译程序,并运行。
要求:测试类放在包名为com.sy4.exe02.test包中,其它类放在com.sy4.exa02包中。
(知识点:类的定义,抽象类,继承,多态)2.继承多态综合应用练习2(1)定义一个抽象的People类,有姓名(name),年龄(age),性别(sex)等成员变量,要求成员变量的访问修饰符为private,通过getXxx()和setXxx()方法对各变量进行读写。
声明具有一个抽象的role()方法,该方法不返回任何值,用于输出人的身份类型,同时至少定义两个构造方法。
(2)定义一个抽象类Employee类,该类继承People类,该类具有People类的所有成员,并新增雇员底薪薪水(salary)和职工编号(empid)成员变量。
同样要有至少两个构造方法,要体现出this和super的几种用法。
声明具有一个抽象的getSalary()方法,该方法返回float 值,用于返回员工薪水。
Java实验四-实验报告
Java实验四-实验报告实验四类和对象;类的继承和派生;多态性;接口;构造器应用一、实验目的1、掌握类与对象的关系;2、掌握类的定义;3、掌握对象的声明及使用;4、掌握构造方法的概念及调用时机;5、掌握构造方法的重载;6、掌握匿名对象的使用。
二、实验学时2学时三、实验类型验证性实验四、实验需求1、硬件每位学生配备计算机一台2、软件Windows 7操作系统,JDK,eclipse,MySQL 3、网络无4、工具无五、实验理论与预备知识1、类与对象的关系;2、类的定义;3、对象的声明及使用;4、构造方法的概念及调用时机;5、构造方法的重载;6、匿名对象的使用。
六、实验内容与结果1、编写一个应用程序,该程序中有3个类:Trangle、Leder和Circle,分别用来刻画“三角形”、“梯形”和“圆形”。
//三角形类class Trangle {double sidea,sideb,sidec,sjxzc,sjxmj;boolean boo;public Trangle(double a,double b,double c){sidea=a;sideb=b;sidec=c;if(a+b>c && a+c>b && b+c>a){boo=true;}else{boo=false;}}double getlength(){double length;length=sidea+sideb+sidec;return length;}public double getarea(){if(boo){double area;double p=(sidea+sideb+sidec)/2.0;area=Math.sqrt(p*(p-sidea)*(p-sideb)*(p-sidec)); return area;}else{System.out.println("不是一个三角形,不能计算面积"); return 0;}}}//梯形类class Laderdouble txsd,txxd,txhigh,txarea;Lader(double a,double b,double c){txsd=a;txxd=b;txhigh=c;}double getarea(){double area;area=(txsd+txxd)*txhigh/2.0; return area;}}//圆形类class Circle{double ybj,yzc,yarea;Circle(double r){ybj=r;}double getarea(){double area;area=3.14*ybj*ybj;return area;}double getlength(){double length;length=2*3.14*ybj;return length;}void setybj(double newybj) {ybj=newybj;}double getybj(){return ybj;}}public class one {public static void main (String args[]){double length,area;Circle circle=new Circle(5);Trangle trangle=new Trangle(3,4,5); Lader lader=new Lader(3,4,6);length=circle.getlength();System.out.println("圆的周长:"+length); area=circle.getarea();System.out.println("圆的面积:"+area); length=trangle.getlength();System.out.println("三角形的周长:"+length); area=trangle.getarea();System.out.println("三角形的面积:"+area); area=lader.getarea();System.out.println("梯形的面积:"+area); trangle=new Trangle(1,1,3);area=trangle.getarea();System.out.println("三角形的面积:"+area); length=trangle.getlength();System.out.println("三角形的周长:"+length); }}2、编写一个公司员工类。
java实验四
实验四字符串操作一实验目的1.掌握字符串的处理方法。
2.掌握String和StringBuffer的区别。
3. 熟悉文件处理及输入输出流的相关方法。
二知识要点1.String类(1)创建String类对象的两种方式。
(2)String类创建的字符串对象的内容不能改变。
(3)String类的常见方法,见表4-1。
方法功能boolean equals(Object obj) 当前串与参数串的内容进行比较boolean equalsIgnoreCase(String s2)忽略字母的大小写,比较当前串和参数串的内容int length()返回字符串长度String trim()返回去除前导空格和尾部空格的字符串int indexOf(int ch, int fromIndex))从formIndex位置开始往后查找字符串中的字符ch的首次出现位置。
int indexOf(String s, int fromIndex))从formIndex位置开始往后查找字符串中的子串s的首次出现位置。
char charAt(int index) 从串中获取指定位置的字符String substring(int begin, int end)根据始末位置从串中获取子串String[] split(String regex) 按照分隔符将串分成若干子串String replace(char ch1,char ch2) 将字符串中所有ch1字符换为ch2 String toLowerCase() 将字符串中的所有大写字母改成小写字母String toUpperCase() 将字符串中的所有小写字母改成大写字母表4-1 String类的常见方法2. StringBuffer类(1)使用构造函数创建StringBuffer对象(2)StringBuffer类创建的字符串可以被修改,可以对串的内容进行增、删、改操作。
(3)StringBuffer的常用方法,见表4-2。
实验四,Java,实验报告
实验四类和对象实验目的(1)掌握类的定义和方法调用。
(2)理解静态和非静态成员变量的区别。
(3)掌握创建类实例的方法。
(4)掌握类的继承机制。
(5)熟悉类中成员变量和方法的访问控制。
(6)熟悉方法的多态性。
实验内容(1)设计一个Dog类,有名字、颜色和年龄属性,定义够着方法初始化这些属性,定义输出方法show()显示信息。
编写应用程序使用Dog类。
(2)编写一个学校类,其中包含成员变量line(录取分数线)和对该变量进行设置和获取的方法。
编写一个学生类,它的成员变量有考生的name(姓名)、id(考号)、total(综合成绩)、sports(体育成绩)。
它还有获取学生的综合成绩和体育成绩的方法。
编写一个录取类,它的一个方法用于判断学生是否符合录取条件。
其中录取条件为:综合成绩在录取分数线之上,或体育成绩在96以上并且综合成绩大与300。
在该类的main()方法中,建立若干个学生对象,对符合录取条件的学生,输出器信息及“被录取”。
(3)设计一个表示二维平面上点的类Point,包括表示位置的protected类型的成员变量x 和y,获取和设置x和y值得public方法。
实际一个表示二维平面上的类Circle,它继承自类Point,还包括表示半径的protected类型的成员变量r、获取和设置r值得public方法、计算圆面积的public 方法。
(4)设计一个表示圆柱体的类Cylinder,它继承自类Circle,还包括表示圆柱体高的protected 类型的成员变量h、获取和设置h值得public 方法、计算圆柱体体积的public 方法。
(5)建立若干个Cylinder对象,输出其轴心位置坐标、半径和高及其体积的值。
实验要求(1)Dog类的构造方法带有3个参数,分别用于接收名字、颜色和年龄。
(2)学生类的构造方法带有4个参数,分别用于接收学生的姓名、考号、综合成绩和体育成绩。
学校类仅包含静态成员变量和方法。
Java实验报告4
(3)如果将B.java去掉import语句,并在使用包中的类时带上完整的路径,运行时结果正确。
(4)把A.java程序的相关部分作如下修改进行测试,编译运行。
System.out.println("从类A中访问Clock hour="+c.hour);
System.out.println("从类A中访问Clock minute="+c.minute);
System.out.println("从类A中访问Clock second="+c.second);
·ClassNotFoundException:具有指定名字的类或接口没有被发现。
·CloneNotSupportedException:克隆一个没有实现Cloneable接口的类。
·IllegalAccessException:试图用给出了完整的路径信息的字符串加载一个类,但是当前正在执行的方法无法访问指定类,因为该类不是public类型或在另一个包中。
int n,a;String x;
BufferedReader keyin=
new BufferedReader(new InputStreamReader(System.in));
System.out.print("Enter an integer");
x=keyin.readLine();
n=Integer.parseInt(x);
JAVA程序设计基础实验四
实验报告四课程JA V A程序设计实验项目异常与线程成绩学号XXXXXX姓名XXXX实验日期2012.10.17专业班级计算机科学与技术09级指导教师XXXXX一【实验目的】(1)理解异常和异常处理的概念(2)理解异常处理机制二【实验内容】【项目一】理解异常处理机制1.编写以下程序,并编译运行3.使用try{}catch{}final{}结构,捕获并处理异常,在final里中打印输出:public class Ex7_1{public static void main(String[] args){try{String output[]={"The","quick","brown","fox","jumps","over","the","lazy","dog."};int i=0;while(i<12){System.out.print(output[i++]);}}catch(Exception e){System.out.print("haha...");}finally{System.out.println("不管怎样都要执行的语句!");}}}【项目二】完成实验指导书——5.2.4 异常处理(1)程序代码class NoLowerLetter extends Exception{public void print(){System.out.printf("%c",'#');}}class NoDigit extends Exception{public void print(){System.out.printf("%c",'*');}}class People{void printLetter(char c) throws NoLowerLetter{if(c<'a'||c>'z'){NoLowerLetter noLowerLetter=new NoLowerLetter(); throw noLowerLetter;}else{System.out.print(c);}}void printDigit(char c) throws NoDigit{if(c<'1'||c>'9'){NoDigit noDigit=new NoDigit();throw noDigit;}else{System.out.print(c);}}}public class ExceptionExample{public static void main (String args[]){People people=new People();for(int i=0;i<128;i++){try{people.printLetter((char)i);}catch(NoLowerLetter e){e.print();}}for(int i=0;i<128;i++){try{people.printDigit((char)i);}catch(NoDigit e){e.print();}}}}(2)运行结果【项目三】使用Thread创建线程,要求及部分源码见附件/线程/1~6.jpgclass Tortoise extends Thread{int sleepTime=0,liveLength=0;Tortoise(int sleepTime,String name,int liveLength){this.sleepTime=sleepTime;this.liveLength=liveLength;setName("乌龟");}public void run(){while(true){liveLength--;System.out.printf("@");try{Thread.sleep(80);}catch(InterruptedException e){}if(liveLength<=0){System.out.printf(getName()+"进入死亡状态\n");return;//结束run()方法的语句;}}}}class Rabbit extends Thread{int sleepTime=0,liveLength;Rabbit(int sleepTime,String name,int liveLength){this.sleepTime=sleepTime;this.liveLength=liveLength;setName("兔子");}public void run(){while(true){liveLength--;System.out.printf("*");try{Thread.sleep(50);}//让线程调用sleep()方法进入中断状态,sleepTime 毫秒后线程重新排队,等待CUP资源;catch(InterruptedException e){}if(liveLength<=0){System.out.printf(getName()+"进入死亡状态\n");return;//结束run()方法的语句;}}}}public class ThreadExample{public static void main(String args[]){String s1="兔子",s2="乌龟";Rabbit rabit;rabit=new Rabbit(50,s1,50);//新建线程rabit;Tortoise tortoise;tortoise=new T ortoise(20,s2,70);//新建线程tortoise;rabit.start();//启动线程tortoisetortoise.start();//启动线程rabit;}}【项目四】使用Rannable接口创建线程class Bank implements Runnable{private int money=100;Thread zhang,keven;Bank(){String s1="会计",s2="出纳";zhang=new Thread(this);zhang.setName(s1);keven=new Thread(this);keven.setName(s2);}public void run(){int i=0;//声明一个int类型变量i,初值为0;while(true){if(Thread.currentThread().getName().equals("会计")){ i=i+1;money=money+1;System.out.printf("%s将money的值改为%d\t",zhang.getName(),money);System.out.printf("%s的局部变量i=%d\n",zhang.getName(),i);if(i>=6){System.out.printf("%s线程进入死亡状态\n",zhang.getName());return;}try{Thread.sleep(1000);}catch(InterruptedException e){}}else if(Thread.currentThread().getName().equals("出纳")){i=i-1;money=money-1;System.out.printf("\n%s将money的值改为%d\t",keven.getName(),money);System.out.printf("%s的局部变量i=%d\n",keven.getName(),i);if(i<=-6){System.out.printf("%s线程进入死亡状态\n",keven.getName());return;}try{Thread.sleep(1000);}catch(InterruptedException e){}}}}}public class BankExample{public static void main(String args[]){Bank bank=new Bank();bank.zhang.start();bank.keven.start();}}三【实验小结】本次实验是这么课程的第四次实验,通过前几次的实验让我对Java的学习有了更深一步的了解,这次实验主要练习的是线程和异常,仍然主要是利用了类的创建,在做实验的过程中,第一步编译的时候还是会出现许多错误,根据错误的地方提示再一步一步的进行修改。
java实验四实验报告
}
编译:javac TwoThread.java
解释执行:java TwoThread
运行后结果:
1、用创建Thread类的子类的方法实现多线程:
源程序:
class FruitThread extends Thread
{
public FruitThread (String str)
{
super(str);
}
public void run()
{
for(int i=0;i<5;i++)
{
System.out.println(i+""+getName());
T2.start();
}
}
编译:javac C.java
解释执行:java RunThread
运行后结果:
c源程序:
class run1Thread implements Runnable
{
public void run()
{
System.out.println("This is Runnable");
outputClass(String s){
name=s;
}
public void run(){
for(int i=0;i<3;i++){
System.out.println(name);
Thread.yield();
}
}
}
class runThreads{
public static void main(String args[]){
try
{
sleep((int)(Math.random()*1000));
Java实验指导书(实验四)
实验四类与对象(二)一、实验目的1、理解引用变量与对象实例之间的关系与区别;2、理解方法调用时引用类型参数的传递过程;3、理解Java语言中包的概念以及package、import语句的使用;4、掌握private、protected、public等关键的使用场合与使用方法;5、掌握对象组合的方式与方法;6、掌握基本数据类型包装类的使用方法。
二、实验要求1、根据实验步骤中提出的要求,使用记事本编写相应的Java程序;2、使用JDK中提供的javac以及java命令编译、运行自己所编写的Java程序;3、根据编译与运行过程中所获得的错误信息修改程序直至获得正确的结果;4、记录实验中遇到的各类问题并以及解决办法。
三、实验步骤1、对象实例的引用(1)采用记事本编写下面所给的Java程序并保存为Card.java;class Card{int id;double balance;Card(int id,double balance){this.id=id;this.balance=balance;}void withdraw(double amount){balance-=amount;}void deposit(double amount){balance+=amount;}void print(){System.out.printf("Card id:%10d \nBalance: $%8.2f",id,balance);}}(2)采用记事本编写下面所给的Java程序并保存为CardTest.java;class CardTest{public static void main(String args[]){Card a=new Card(1,500);Card b=open(2);transfer(a,b,120);a.print();b.print();}Card open(int id){return new Card(id,0);}static void transfer(Card from ,Card to ,double amount){from.withdraw(amount);to.deposit(amount);Card temp=from;from=to;to=temp;}}(3)改正程序中的错误,编译并运行CircleTest查看结果。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
武汉工程大学计算机科学与工程学院实验报告[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 框架,通过这个例子学习如何创建一个简单的图形用户界面。
例 4-1 下面的例子是建立一个 Frame 框架,并能够打开一个文件打开窗体。
请分析程序,并根据注释填空,实现窗体功能。
import javax.swing.*;import java.awt.*;import java.awt.event.*;public class FirstFrame extends JFrame implements ActionListener{JButton but=new JButton("打开文件窗体");public FirstFrame(String str){super(str);(1) //设置窗体的大小this.setLocation(100,100);(2) //添加按钮(3) //增加按钮监听this.setVisible(true);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}public void actionPerformed(ActionEvent e){FileDialog fd = new FileDialog(this, "FileDialog");(4)//显示文件打开窗体}public static void main(String args[]){FirstFrame mf=new FirstFrame("这是个窗体");}}-------------------------------------------------------------------------------------------------------------- 根据注释填空:(1)s etSize(400,300);(2)a dd(but);(3)b ut.addActionListener(this);(4)f d.setVisible(true);运行截图:点击按钮前:点击按钮后:2.向图形用户界面中添加组件,实现交互信息利用各种组件及Java 事件的处理机制才能准确地处理用户的交互信息,完成用户的各种操作。
例4-2 编写一个窗体,其功能为:在窗口上摆放两个标签。
构造第一个标签时,令其上面的文本信息为“我将参加Java 程序设计考试。
”,将第二个标签构造为空标签。
程序将第一个标签的信息复制到第二个标签上,并增加信息“希望自己考取好成绩。
”。
要求第一个标签以红色为背景,绿色为前景;第二个标签以绿色为背景,蓝色为前景。
请根据注释填空,实现该窗体的功能。
import java.awt.*;import javax.swing.*;class LabelFrame extends JFrame{JLabel p1=new JLabel("我将参加Java 程序设计考试。
");(1) //声明创建第二个标签p2public LabelFrame( ){//设置窗体的布局setLayout(new FlowLayout());p1.setOpaque(true);//设置标签可透明p2.setOpaque(true);(2)//添加第一个标签(3)//添加第二个标签//将第一个标签的信息复制到第二个标签上,并增加信息“希望自己考取好成绩”。
(4)p1.setBackground(Color. red);(5) //设置第一个标签的前景颜色(6)//设置第二个标签的背景颜色p2.setForeground(Color.blue);}public static void main(String[] args){LabelFrame myFrame = new LabelFrame();myFrame.setTitle("标签窗体");myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);myFrame.setSize(250,250);(7)//设置窗体的可见性}}根据注释填空:(1)J Label p2=new JLabel();(2)a dd(p1);(3)a dd(p2);(4)p2.setText(p1.getText()+",希望自己取得好成绩。
");(5)p1.setForeground(Color.green);(6)p2.setBackground(Color.green);(7)m yFrame.setVisible(true);运行截图:注意:从例4-2 可以看出,设置背景颜色程序使用语句:setBackground(Color.red);设置前景颜色程序使用语句:setForeground(Color.red);因为Java中控件默认下是不透明的,因此如果想显示背景颜色,我们需要添加语句p1.setOpaque(true);来设置标签可透明。
例4-3 编写一个窗体,包括一个用于给出提示信息的标签和两个文本框,其中,一个输入文本框用于获取用户给出的一个整数,求该数的平方后将计算结果置在另一个输出文本框中输出。
请根据注释将程序补充完整,并执行成功。
(注意:数值型数据与字符串之间的相互转换)import java.awt.*;import javax.swing.*;import java.awt.event.*;class ComputeFrame extends JFrame implements ActionListener{//声明控件(1)public ComputeFrame ( ){//创建控件(2)setLayout(new FlowLayout());//添加控件(3)//为输入文本框增加监听(4)}public void actionPerformed(ActionEvent evt){//求输入数字的平方后将计算结果置在另一个输出文本框中输出。
(5)}public static void main(String[] args){ComputeFrame myFrame = new ComputeFrame ();myFrame.setTitle("Show");myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);myFrame.setSize(250,250);myFrame.setVisible(true);}}根据注释将程序补充完整:(1)J Label l;JTextField num1,num2;(2)l=new JLabel("的平方等于:");num1=new JTextField(5);num2=new JTextField(7);(3)a dd(num1);add(l);add(num2);(4)n um1.addActionListener(this);(5)i nt n1=Integer.parseInt(num1.getText());num2.setText(""+(n1*n1));试运行截图:3.利用布局管理器布局用户界面组件为了使图形用户界面具有良好的平台无关性,提供了专门用来管理组件在容器中的布局的工具。
Java 将容器内的所有组件安排给一个“布局管理器”负责管理,如:排列顺序,组件的大小、位置等。
我们应学会选择不同的布局管理器来决定容器内组件的布局。
(1)使用面板默认的FlowLayout 布局管理器FlowLayout 布局管理器的特点是在一行上水平排列组件,直到该行上没有足够的空间,这时另起一行,并默认为居中显示。
例4-4 下面的例子是通过FlowLayout 布局管理器来排列多个按钮,请根据注释填空,实现例子功能。
import java.awt.*;import java.awt.event.*;import javax.swing.*;public class FlowLayoutTest{public static void main(String[]args){int buttonNumber=10;ButtonFrame frame=new ButtonFrame(buttonNumber);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.show();} }class ButtonFrame extends JFrame{ public ButtonFrame(int buttonNumber){buttons=buttonNumber;setTitle("FlowLayoutTest");setSize(WIDTH,HEIGHT);JPanel buttonPanel=new JPanel();//设置窗体布局(1)//增加相应的按钮for(int i=0; i<buttons;i++){JButton addButton=new JButton("add"+i);//添加按钮(2)}}public static final int WIDTH=350;public static final int HEIGHT=200;private int buttons;}根据注释填空:(1)a dd(buttonPanel);buttonPanel.setLayout(new FlowLayout(FlowLayout.CENTER,20,40));(2)b uttonPanel.add(addButton);试运行截图:(2)使用BorderLayout 布局管理器边界布局可以将组件置于容器的中部、南部、北部、东部和西部。