_JAVA实验三
Java实验三实验报告1
Java实验三实验报告1一、实验目的本次 Java 实验的主要目的是深入理解和掌握 Java 中的面向对象编程概念,通过实际的编程实践,提高对类、对象、继承、多态等特性的运用能力,同时培养良好的编程习惯和代码规范。
二、实验环境1、操作系统:Windows 102、开发工具:Eclipse IDE for Java Developers三、实验内容1、设计一个名为`Shape` 的抽象类,其中包含一个抽象方法`calculateArea()`用于计算图形的面积。
2、分别创建`Circle`(圆形)、`Rectangle`(矩形)和`Triangle`(三角形)类继承自`Shape` 类,并实现各自的`calculateArea()`方法来计算具体图形的面积。
3、创建一个测试类`TestShapes`,在其中创建不同图形的对象,并调用其计算面积的方法,输出结果。
四、实验步骤1、创建`Shape` 抽象类```javaabstract class Shape {abstract double calculateArea();}```2、创建`Circle` 类继承自`Shape` 类```javaclass Circle extends Shape {private double radius;public Circle(double radius) {thisradius = radius;}@Overridedouble calculateArea(){return MathPI radius radius;}}```3、创建`Rectangle` 类继承自`Shape` 类```javaclass Rectangle extends Shape {private double length;private double width;public Rectangle(double length, double width) {thislength = length;thiswidth = width;}@Overridedouble calculateArea(){return length width;}}```4、创建`Triangle` 类继承自`Shape` 类```javaclass Triangle extends Shape {private double base;private double height;public Triangle(double base, double height) {thisbase = base;thisheight = height;}@Overridedouble calculateArea(){return 05 base height;}}```5、创建测试类`TestShapes````javapublic class TestShapes {public static void main(String args) {Circle circle = new Circle(50);Rectangle rectangle = new Rectangle(40, 60);Triangle triangle = new Triangle(30, 80);Systemoutprintln("圆形的面积:"+ circlecalculateArea());Systemoutprintln("矩形的面积:"+ rectanglecalculateArea());Systemoutprintln("三角形的面积:"+trianglecalculateArea());}}```五、实验结果运行测试类`TestShapes` 后,输出结果如下:```圆形的面积:78539816矩形的面积:240三角形的面积:120```六、实验中遇到的问题及解决方法1、在编写抽象类和子类的代码时,一开始对于抽象方法的定义和实现理解不够清晰,导致代码出现错误。
Java实验报告(三)
Java实验报告(三)实验(三)类和对象⼀、实验⽬的和要求1.掌握类的构造函数的重载2.深⼊理解类和对象3.学习NetBeans中UML项⽬的创建类并⽣成相应代码的⽅法⼆、实验内容和原理设计⼀个复数类,能够完成复数之间的基本运算,重写⽅法toString(),使其能输出此复数(形式为:实部 + 虚部i)。
要求设计的复数类必须有三个构造函数,分别为⽆参数、1个参数和2个参数的构造函数,完成的基本运算包括两个复数的加、减、乘、除法和共轭复数。
三、实验环境1.硬件环境:2.软件环境:JDK1.5四、算法描述及实验步骤1.算法描述(可以⽤类图、流程图、伪代码或源程序描述)2.实验步骤●创建⼀个UML项⽬,并设计类Complex如下图●创建⼀个Java应⽤项⽬●把UML项⽬中的Complex⾃动⽣成代码到Java应⽤项⽬中●实现Complex类中的⽅法●进⾏编译●进⾏测试,使⽤的测试⽤例:输⼊:预期输出:…代码:Complex类:package studentTaskThree;/*** 复数类* @author Administrator**/public class Complex{/*** 定义类变量,复数的实部realPart和虚部ImaginaryPart */ private double realPart;private double imaginaryPart;/*** ⽆参构造⽅法*/public Complex(){super();* 不含实部复数的构造⽅法* @param realPart*/public Complex(double imaginaryPart){super();this.imaginaryPart = imaginaryPart;}/*** 含有实部参数和虚部参数的构造⽅法* @param realPart* @param imaginaryPart*/public Complex(double realPart, double imaginaryPart) { super();this.realPart = realPart;this.imaginaryPart = imaginaryPart;}/*** 读取实部* @return*/public double getRealPart(){return realPart;}/*** 设置实部* @param realPart*/public void setRealPart(double realPart){this.realPart = realPart;* 读取虚部* @return*/public double getImaginaryPart(){return imaginaryPart;}/*** 设置虚部* @param imaginaryPart*/public void setImaginaryPart(double imaginaryPart){this.imaginaryPart = imaginaryPart;}/*** 复数相加⽅法* @param complex* @return*/public Complex plus(Complex complex){return new Complex(this.realPart + complex.realPart, this.imaginaryPart + complex.imaginaryPart); }/*** 复数相减⽅法* @param complex* @return*/public Complex minus(Complex complex){return new Complex(this.realPart - complex.realPart, this.imaginaryPart - complex.imaginaryPart); }* @param complex* @return*/public Complex times(Complex complex){return new Complex(complex.realPart * this.realPart - complex.imaginaryPart * this.imaginaryPart,complex.realPart * this.imaginaryPart +complex.imaginaryPart * this.realPart);}/*** 复数相除⽅法* @param complex* @return*/public Complex divideBy(Complex complex){double dividedPart = (this.realPart * this.realPart +this.imaginaryPart * this.imaginaryPart);return new Complex((complex.realPart * this.imaginaryPart + complex.imaginaryPart * this.realPart) / dividedPart, (complex.imaginaryPart* this.realPart- complex.realPart * this.imaginaryPart) / dividedPart);}/*** 求共轭复数⽅法* @return*/public Complex conjugate(){return new Complex(this.getRealPart(),-this.getImaginaryPart());}/*** 重写toString⽅法,实现复数的输出格式*/String str = "";// 实部为零,虚部不为零if (this.realPart == 0 && this.imaginaryPart != 0){str += this.getImaginaryPart() + "i";}// 实部不为零,虚部为零else if (this.realPart != 0 && this.imaginaryPart == 0){str += this.getRealPart();}// 实部、虚部都不为零else if (this.realPart != 0 && this.imaginaryPart != 0){str += this.getRealPart() + (this.getImaginaryPart() > 0 ? "+": "") + this.getImaginaryPart() + "i"; }return str;}}测试类:Complexdemopackage studentTaskThree;/*** 测试类* @author Administrator**/public class ComplexDemo{/*** main⽅法,测试程序⼊⼝点* @param args*/public static void main(String[] args)* 创建两个完整复数对象*/Complex com1 = new Complex(1, 2);Complex com2 = new Complex(2, 1);// 创建⽆参复数Complex com3 = new Complex();// 创建只有虚部的复数Complex com4 = new Complex(5);// 输出对象System.out.println("复数1:" + com1);System.out.println("复数2:" + com2);System.out.println("复数3:" + com3);System.out.println("复数4:" + com4);// 输出相加结果System.out.println("复数相加:(" + com1 + ") + (" + com2 + ") = " + (com1.plus(com2)).toString()); // 输出相减结果System.out.println("复数相减:(" + com1 + ") - (" + com2 + ") = "+ (com1.minus(com2)).toString());// 输出相乘结果System.out.println("复数相乘:(" + com1 + ") * (" + com2 + ") = " + com1.times(com2));// 输出相除结果System.out.println("复数相除:(" + com1 + ") / (" + com2 + ") = " + com1.divideBy(com2));// 输出所求的共轭复数System.out.println("共轭复数: " + com1 + " 共轭复数是:" +com1.conjugate());}}实际测试类:import javax.swing.JOptionPane;/*** 实际测试类* @author Administrator**//*** 测试类⼊⼝点* @param args*/public static void main(String[] args){// 创建两个复数对象Complex com1 = new Complex();Complex com2 = new Complex();// 输⼊数据com1.setRealPart(Double.parseDouble(JOptionPane.showInputDialog("请输⼊复数1的实部:")));com1.setImaginaryPart(Double.parseDouble(JOptionPane.showInputDia log("请输⼊复数1的虚部:")));com2.setRealPart(Double.parseDouble(JOptionPane.showInputDialog("请输⼊复数2的实部:")));com2.setImaginaryPart(Double.parseDouble(JOptionPane.showInputDia log("请输⼊复数2的虚部:")));// 输出各个⽅法的测试结果JOptionPane.showMessageDialog(null, "复数应⽤测试如下:\n" +"复数1:" + com1 + "\n" +"复数2:" + com2 + "\n" +"复数相加:" + com1.plus(com2) + "\n" +"复数相加:" + com1.minus(com2) + "\n" +"复数相乘:" + com1.times(com2) + "\n" +"复数相除:" + com1.divideBy(com2) + "\n" +"共轭复数:" + com1 + " 共轭复数是:" +com1.conjugate());}}五、调试过程1.编译过程没有错误。
JAVA实验报告三
实验三一、实验目的1、学习java程序中简单字符和图形界面的字符和数字数据的输入输出。
2、学习java程序中画圆方法的具体应用。
3、掌握数据类型转换类型中的将字符串型转换为整型。
二、实验任务编写一个类实现一个圆。
属性:Center:代表圆心坐标的Point类对象(Point是awt包中的类,每个Point类对象拥有x和y两个属性,代表一个点的横纵坐标)Radius双精度型,代表圆的半径方法:MyCircle(Point p,double r)构造方法,创建圆对象时为其属性赋初值MyCircle(MySquare s)构造方法,根据圆的外接正方形创建这个圆对象并初始化其圆心和半径get Center()获得圆对象的圆心Point对象get Radius()获得圆对象的半径数值calPerimeter()计算当前圆对象的周长并返回(提示:可使用常数Math.PI)calArea()计算当前圆对象的面积并返回drawMyCircle(Graphics g)在给定的Graphics对象g中画出当前圆对象(提示:可以使用Graphics类的方法drawOval())定义一个类MyRectangle代表矩形,为矩形派生出一个子类MySquare代表正方形。
在以上类的基础上,定义接口Drawable,其中包含一个抽象方法drawShape(),使MyRectangle和MyCircle类都实现这个接口。
三、实验步骤1、Java程序代码(*.java)和详细的行注释//文件名称为“MyCircle.java”import java.applet.Applet;//将java.applet包中创建applet所必需的类和applet用来与其applet上下文通信的类引入到当前程序import java.awt.*;//把JAVA系统中有关抽象窗口工具的包(系统类库)引入到当前程序实现接口import java.awt.event.*;//将java.awt.event包中由AWT组件所激发的各类事件的接口和类引入到当前程序public class MyCircle extends Applet implements ActionListener//定义主类,在浏览器中显示信息{Label result1,result2,result3,result4;//定义了4个标签TextField in1,in2,in3,in4,in5;//定义了5个文本框Button btn;//定义一个按钮int x,y,r;//定义三个整数public void init()//显示界面{result1=new Label("请输入半径:");//创建标签的对象in1=new TextField(6);//为文本框分配内存result2=new Label("请输入圆心坐标:");//创建标签的对象in2=new TextField(10);//为文本框分配内存in3=new TextField(10);//为文本框分配内存result3=new Label("圆的面积是:");//创建标签的对象in4=new TextField(10);//为文本框分配内存result4=new Label("圆的周长是:");//创建标签的对象in5=new TextField(10);//为文本框分配内存btn=new Button("执行");//创建按钮的对象add(result1);add(in1);add(result2);add(in2);add(in3);add(btn);add(result3);add(in4);add(result4);add(in5);/*将定义好的4个标签、5个文本框、1个按钮添加到界面*/btn.addActionListener(this);//按钮监听事件}public void paint(Graphics g)//paint方法,画图{Graphics2D g2=(Graphics2D)g;//创建Graphics2D的引用g2.setColor(Color.red);//获取颜色g.drawOval(x,y,r,r);//画圆g.drawString("My radius is:"+r,x,y);//显示字符串in4.setText(""+(3.14*r*r));//获取圆的面积in5.setText(""+(3.14*2*r));//获取圆的周长}public void actionPerformed(ActionEvent e)//系统定义的接口,监听事件并处理动作事件{r=Integer.parseInt(in1.getText());x=Integer.parseInt(in2.getText());y=Integer.parseInt(in3.getText());/*数据类型转换,将字符串型转换整型*/ repaint();//刷新页面}}HTML程序:<HTML>//标记开始<BODY>//文档体<APPLET CODE="MyCircle.class"HEIGHT=600WIDTH=1000>//将java.Applet 字节码嵌入HTML文件,并设置java.Applet程序在所对应的wed页面中占用区域的高度和宽度的大小</APPLET></BODY>//文档体元素标记</HTML>//结束2、程序的运行(包括运行的过程、界面和结果图)首先编写如上所示的源程序,保存文件名称为“MyCircle.java”,然后编译源程序,编译完成后,生成两个字节码文件MyCircle.class和DrawTest.class,将这两个字节码文件与源文件存放在相同的目录中,因为此为Applet小程序:必须嵌入在HTML页面中的非独立程序,部署在Web服务器,在浏览器中的虚拟机上(JVM)执,因此,执行HTML程序,得到如图1所示的窗口:图1列举例子,在第一个文本框中输入圆的半径,第二和第三个文本框中分别输入横坐标和纵坐标,结果显示如图2:图23、结果分析1、该实验题程序的前三行分别加载了Java类库中的类:ja.applet.*、java.awt.*和java.awt.event.*。
Java实验报告三
Java实验报告三Java实验报告班级计科⼆班学号 20188450 姓名李代传完成时间 2019.9.20评分等级实验三 String类的应⽤1. 实验⽬的1. 掌握类String类的使⽤;2. 学会使⽤JDK帮助⽂档;2. 实验内容1.已知字符串:"this is a test of java".按要求执⾏以下操作:(要求源代码、结果截图。
)3. 统计该字符串中字母s出现的次数。
4. 统计该字符串中⼦串"is"出现的次数。
5. 统计该字符串中单词"is"出现的次数。
6. 实现该字符串的倒序输出。
2.请编写⼀个程序,使⽤下述算法加密或解密⽤户输⼊的英⽂字串。
要求源代码、结果截图。
3.已知字符串"ddejidsEFALDFfnef2357 3ed"。
输出字符串⾥的⼤写字母数,⼩写英⽂字母数,⾮英⽂字母数。
1. 实验过程1. 实验代码1. 算法详解:很简单,就是使⽤字符串的indexOf()⽅法找到被查找的字符串中的第⼀个需要查找的字符串,然后从这个索引的后⼀个位置继续查找。
因为查找都是⽤的⼀种算法,只需要改变⼩部分参数就⾏了,所以我把它单独写成了⼀个⽅法。
StringBuffer中有能倒序输出的⽅法,所以把字符串当做参数new了⼀个StringBuffer就很简单。
1.实验结果2.实验代码算法详解:把输⼊的字符串⽤toCharArray()⽅法拆分成字符数组,然后⼀个字符⼀个字符的进⾏操作。
⽤x来记录是解密或者是加密,这样就能在后⾯决定是+3或者是-3,能通过这⼀个变量来节省很多重复语句。
算法详解:下⾯这个就是加密算法,⽤了String类的substring⽅法,作⽤是得到指定位置的字符串。
因为是向后移动三位,所以就直接把最后三个字符取出来放到最前⾯就好了。
但是原来的字符串没有变,所以要把最后三个字符去掉,⽤了StringBuffer类中的replace⽅法,作⽤是替换掉指定位置的字符串,我把替换为了空字符串,就相当于删除了。
Java实验三实验报告1
淮海工学院计算机工程学院实验报告书课程名:《Java语言实验与课程设计指导》题目:实验3——深入面向对象编程班级:学号:姓名:实验题目:1.定义一个学生类,定义一个大学生类和小学生类,这两个类是学生类的子类;定义一个选课接口,由大学生类实现该接口,定义一个年龄异常处理,当小学生年龄小于7岁时,弹出异常。
2.定义一个银行卡类,定义一个信用卡类和普通银行卡类,这两个类是银行卡类的子类;定义一个透支的接口,信用卡可以透支,普通银行卡不可以透支。
定义一个取款异常和透支异常,当普通银行卡取款超过银行卡余额时,弹出“取款异常”;当信用卡透支超过2万元时弹出“透支异常”。
实验代码:题1源代码:import java.awt.*;class student{String number,name,sex,bj;int age;student(String xuehao,String xingming,String xingbie,int nianling,String banji){number=xuehao;name=xingming;sex=xingbie;age=nianling;bj=banji;}}interface xuanke{abstract void select(String s);}interface illegal{abstract void illegal(int s);}class primary extends student implements illegal{String xx;primary(String xuehao,String xingming,String xingbie,int nianling,String banji,String xiaoxue){super(xuehao,xingming,xingbie,nianling,banji);}public void illegal(int s){age=s;if(age<7)System.out.println("\n出错~学生"+name+" 的年龄过小!");}}class college extends student implements xuanke{String dx,xk;college(String xuehao,String xingming,String xingbie,int nianling,String banji,String daxue){super(xuehao,xingming,xingbie,nianling,banji);dx=daxue;}public void select(String s){xk=s;}}public class test_1{public static void main(String args[]){primary p1=new primary("1","张三","男",13,"五(1)班","ZZZ小学");System.out.println(p1.number+" "++" "+p1.sex+" "+p1.age+" "+p1.bj+" "+p1.xx);p1.illegal(p1.age);primary p2=new primary("\n2","小红","女",6,"一(1)班","YYY小学");System.out.println(p2.number+" "++" "+p2.sex+" "+p2.age+" "+p2.bj+" "+p2.xx);p2.illegal(p2.age);college c1=new college("3","小茗","女",20,"软件112","XXX大学");c1.select("现代密码学");System.out.print("\n"+c1.number+" "++" "+c1.sex+" "+c1.age+" "+c1.bj+" "+c1.dx+" "+c1.xk+"\n");}}实验结果:题2源代码:import java.util.*;class bankcard{String kh,name;double yue;bankcard(String kahao,String yezhu,double shengyu) {kh=kahao;name=yezhu;yue=shengyu;}}interface touzhi{abstract void tz(double s);abstract void tzye(double s);abstract void illegal();}interface qkillegal{abstract void illegal();}class common extends bankcard implements qkillegalcommon(String kahao,String yezhu,double shengyu){super(kahao,yezhu,shengyu);}public void warning(){System.out.println("普通银行卡不可透支!");}public void illegal(){System.out.println("取款超额!");}}class xinyongka extends bankcard implements touzhi{double tzye;xinyongka(String kahao,String yezhu,double shengyu){super(kahao,yezhu,shengyu);}public void tz(double s){tzye=s;}public void tzye(double s){double t=20000+yue-s;if(s>yue)System.out.println(t);}public void illegal(){System.out.println("透支超额!");}}public class test_3{public static void main(String args[]){common c1=new common("62226200240001916658","张三",1200.00);System.out.println("卡号:"+c1.kh+"业主:"++"余额:"+c1.yue);System.out.println("请输入取款金额:");Scanner s1=new Scanner(System.in);double b=s1.nextDouble();if(b<c1.yue){double c=c1.yue-b;System.out.println("银行卡余额为:"+c);}elsec1.illegal();System.out.println("\n\n");xinyongka x1=new xinyongka("62236200243008615559","李四",500.00);System.out.println("卡号:"+x1.kh+"业主:"++"余额:"+x1.yue);System.out.println("信用卡可透支!透支金额为20000元!");System.out.println("请输入要取款金额:");Scanner s2=new Scanner(System.in);double a=s2.nextDouble();if(a<=x1.yue){double d=x1.yue-a;System.out.println("银行卡余额为:"+d);}else if(a>x1.yue&&a<=(20000+x1.yue)){System.out.println("透支余额剩余:");x1.tzye(a);}elsex1.illegal();}}实验结果:普通银行卡类:输入普通银行卡取款金额若输入金额小于余额则若大于余额则信用卡类:输入取款金额,若输入金额小于余额则若输入金额大于余额小于透支金额与余额之和,则若大于透支金额与余额之和,则。
java实验3
集美大学诚毅学院实验报告一、目的(本次实验所涉及并要求掌握的知识点)学习Java的异常处理方法;熟悉字符串常用的处理方法;熟悉常用的容器类。
二、实验容与设计思想(设计思路、主要数据结构、主要代码结构、主要代码段分析、输出结果图)(1)题目:设计一个特殊的整数输入类,当输入的数大于1000时,发生ExceedExcept异常。
ExceedExcept为自定义的一个异常类。
class MyException extends Exception{String message;MyException(int n){message=n+"符合要求";}public String getMessage(){return message;}}class A{public void f(int n) throws MyException{if(n<1000){MyException ex=new MyException(n);throw(ex); //抛出异常,结束方法f的执行}System.out.println(n+"不符合要求");}}public class timu01{public static void main(String args[]){A a=new A();try{a.f(1000);a.f(999);}catch(MyException e){System.out.println(e.getMessage());}}}(2)题目:设计一个字符串处理程序:实现字符串的整体、前缀、后缀比较;子字串定位;数字型字符转化为数字等各种功能。
实验代码:import java.util.Scanner;public class timu02 {public static void main(String[] args) {String s1="Java C# SQL",s2="JCS";Scanner input=new Scanner(System.in);System.out.println("----------字符串处理程序---------");System.out.println("字符串的整体比较如下:");if(pareTo(s2)<0)System.out.println("'"+s1+"' < '"+s2+"'");elseSystem.out.println("'"+s1+"' >= '"+s2+"'");System.out.println("字符串的前缀比较如下:");System.out.print("请输入要比较的前缀:");String s=input.next();if(s1.startsWith(s))System.out.println(s+"是"+s1+"的前缀。
《Java程序设计》实验报告 --实验3
else if(e.getSource()==buttontwo){//按键2操作
tf.setText(tf.getText()+"2");
flag1=Double.parseDouble(tf.getText());
}
else if(e.getSource()==buttonthree){//按键3操作
buttondevision=new JButton("/");
buttonsin=new JButton("sin");
buttontozero=new JButton(">0");
paneleast.setLayout(new GridLayout(3,1));//设置西边的布局为3行1列
//将操作按钮"+""-""*""/""sin"">0"添加到西边的面板中
JButton buttonplus,buttonminus,buttonmultiple,buttondevision,
buttonsin,buttontozero;//新建按钮"+""-""*""/""sin"和归零按钮
JButton buttonone,buttontwo,buttonthree,buttonfour,buttonfive,buttonsix,
panelcenter.add(buttonthree);
panelcenter.add(buttonfour);
panelcenter.add(buttonfive);
Java实验报告(三)
实验三Java继承与接口【实验目的】理解继承原理与机制及类继承的声明方法;掌握成员变量的隐藏及方法的重写;掌握抽象类与抽象方法;掌握super、final关键字;理解多态的内涵及实现代码;掌握4种访问修饰符的区别;掌握接口声明及使用【实验内容】1、编写一个Java应用程序,除了主类(TestOne)外,该程序中还有3个类:People、ChinaPeople和AmericanPeople。
该程序具体要求如下:①People类有public void speakHello()、public void averageHeight() 和public void averageWeight()方法。
②ChinaPeople类是People的子类,新增了public void chinaGongfu()方法。
要求ChinaPeople重写父类的public void speakHello()、public void averageHeight()和public void averageWeight()方法。
③AmericanPeople类是People的子类,新增public void americanBoxing()方法。
要求AmericanPeople重写父类的public void speakHello()、public void averageHeight()和public void averageWeight()方法。
④在TestOne类的主方法中分别创建各子类的对象并调用各自的方法打印输出信息。
要求:第1题调试结果如下图:2、编写一个Java应用程序,除了主类(TestTwo)外,该程序还有Shape接口、三角形类Triangle类、矩形Rectangle类和圆形Circle类。
该程序具体要求如下:①Shape接口(用来表示一般二维图形):具有抽象方法area和perimeter,分别用来计算形状的面积和周长。
Java第三次实验
实验4:修饰符与继承性一、实验目的了解如何使用类及其成员的修饰符,理解类的继承性,掌握方法的继承、重载和覆盖。
二、实验要求1.编写如何使用类及其成员的修饰符的程序。
2.编写如何通过传递参数来调用方法的程序。
3.编写体现类的继承性(成员变量、成员方法的继承)的程序。
三、实验内容(一)使用修饰符有时需要公开一些变量和方法,有时需要禁止其他对象使用变量和方法,这时可以使用修饰符来实现这个目的。
常用的修饰符有:public,private,protected,package,static,final,abstract等。
1.程序功能:通过两个类StaticDemo、KY4_1 来说明类变量与对象变量,以及类方法与对象方法的区别。
2.编写源程序KY4_1.java,程序源代码如下。
class StaticDemo {static int x;int y;public static int getX() {return x;}public static void setX(int newX) {x = newX;}public int getY() {return y;}public void setY(int newY) {y = newY;}}public class KY4_1 {public static void main(String[] args) {System.out.println("类变量x="+StaticDemo.getX());System.out.println("对象变量y="+StaticDemo.getY());StaticDemo a= new StaticDemo();StaticDemo b= new StaticDemo();a.setX(1);a.setY(2);b.setX(3);b.setY(4);System.out.println("类变量a.x="+a.getX());System.out.println("对象变量a.y="+a.getY());System.out.println("类变量b.x="+b.getX());System.out.println("对象变量b.y="+b.getY());}}3.编译并运行程序KY4_1.java,看看该程序是否有错?如果有错请在实验报告中指出出错的地方,出错的原因,并给出修改意见以及程序正确运行的结果。
java实验报告实验3答案
实验三熟悉常用java工具包并运用编程实验目的:本实验旨在巩固同学们对上课所讲java.util工具包中Collection,List,Set,Map加深理解,对其用法编程有一个更加深入的理解,为同学们以后的能够用Java进行独立地编写桌面程序打下一定的基础。
实验内容:本实验的内容为:用Collection,List,Set,Map来存储数据,并进行排序,任何用Iterator,ListIterator或者Enumeration来打印其结果(按顺序和降序排列打印)。
共分为四部分部分(前三部分必做,如果选第四个,前三个可以不做。
):(1)按顺序把1,10,5,7,6,2,9,20,14,存入到List中(注:允许自己自定义任何数),并对其进行排序,打印其升序和降序排列的结果。
然后再向List中位置为第四位插入数35看看会有啥结果?再向List中插入字符串“ddy”,试猜想排序是否会出错?然后看看运行结果是啥?程序:import java.util.*;public class SY3{public SY3(){List list=new ArrayList();list.add(1);list.add(10);list.add(5);list.add(7);list.add(6);list.add(2);list.add(9);list.add(20);list.add(14);list.add(35);list.add("ddy");System.out.println("原序列:");for(int i=0;i<=list.size()-1;i++){System.out.println(list.get(i));}System.out.println("新序列");for(int i=0;i<=list.size()-1;i++){Collections.sort(list);Collections.reverse(list);System.out.println(list.get(i));}}public static void main(String[] args){new SY3();}}结果如图(2)按顺序把下面一组数([1,2] [3,4] [2,2] [6,4] [5,2] [4,4])存放到Map中(注:允许自己自定义任何数),并按key 和value的值进行排序。
Java实验三
}
注意:如果要声明的异常是 Error 或者 RuntimeException 的子类,那么就不必显式地用 throws 声明它们,因为这些异常是每个方法都可能会产生的,所以不需要显式地声明它们。
异常处理的搜索 Java 的异常处理搜索机制大致是这样进行的,在程序运行过程中,一旦有一个异常发生,那 么该异常对象随即被产生并被抛出,接下来,程序就开始为该异常搜索相应的处理代码。首 先是在当前方法的 catch 块中依次搜索,若找到相应的 catch 块,则进行处理。若未找到, 则异常将被传递给该方法的上一级调用者,然后进行同样的搜索,这个过程沿着方法调用链 一直持续下去,直到该异常在某个方法中被捕获或最终由 Java 虚拟机捕获并处理。
实验步骤: (1)首先在 d:\programming 目录下创建一个文件夹,命名为 packone,然后在该文件夹下创建 一个名叫 Clock.java 的程序,打开文本编辑器按程序清单输入该程序。
//Clock.Java package packone;
public class Clock { public int hour;
Java.awt.Font; (2)创建好与包相对应的文件结构,比如说创建的包是(com.Java.myclass,那么必须在类环境 中建立一个同样的目录结构,com\Java\myclass)。 (3)编写类的时候,将该类加入到指定的包中,使用 package 表明,如下所示:
package com.Java.myclass;
catch(ArithmeticException ex){ ) catch(Exception ex){ } 正确写法
Java实验三实验报告
实验报告课程名称面向对象课程设计实验项目名称类的继承班级与班级代码13计算机科学与技术1班实验室名称(或课室)SS1 205专业计算机科学与技术任课教师尹华学号:12251102120姓名:林淑英实验日期:2014 年4 月28 日广东财经大学教务处制姓名林淑英实验报告成绩评语:指导教师(签名)年月日说明:指导教师评分后,实验报告交院(系)办公室保存。
实验三类的继承、多态、接口、访问控制符与修饰符实验目的:通过编程练习掌握类的继承,多态,接口,访问控制符与修饰符的使用方法。
实验原理:类的继承,接口。
实验设备:计算机,Eclipse。
实验题目:1.设计一个Person 类,其成员变量有:姓名(name)、性别(gender)、年龄(age);再设计一个Student类,它是类Person的子类,其成员变量有:学号(id)、班名(cname)、成绩(score),类Student中要有一个方法 display(),用来显示一个学生的信息。
编写一个测试程序,创建一个Student类的对象,要求name和id 是自己的姓名和学号,输出学生的各种信息,学生的基本信息在类Student的带参数的构造方法中设定。
2.定义一个类A,该类有一个方法f,方法f可以输出英文字母,再定义一个类B是A的子类,子类B不能重写父类A的方法f,子类有一个方法g,可以输出中文字符串。
编写测试程序,创建B的对象,输出英文字母和中文字符串。
3.定义一个坐标类Pointer,成员变量包括x和y;成员方法有:(1)构造方法(2)setX、setY、getX、getY、display方法(3)类方法distance用来计算两点之间的距离编写测试程序,创建Pointer的两个对象并计算两个点坐标的距离。
4. 定义一个抽象类Area、两个Area的子类RectArea和RoundArea,以及一个实现类ImpleArea。
要求如下(1)抽象类Area类中只包含一个抽象方法double area()。
java实验报告(实验三)
System.out.println("输入第二个日期的年份:");
int yearTwo=read.nextInt( );
System.out.println("输入该年的月份:");
int monthTwo=read.nextInt( );
System.out.println("输入该月份的日期:");
Date date1=【代码6】//用timeOne做参数构造date1
Date date2=【代码7】//用timeTwo做参数构造date2
if(date2.equals(date1))
{
System.out.println("两个日期的年、月、日完全相同");
}
else if(date2.after(date1))
北京林业大学
2013学年—2014学年第2学期Java程序设计基础实验报告书
专 业:电子班 级:11-2
姓 名:王云飞学 号:
实验地点:计算机中心任课教师:黄儒乐
实验题目:自定义异常与异常处理,常用类使用
实验环境:Windows2000/XP;局域网
实验要求:
1.对所有实验内容中涉及到的命令均要亲自实践,对照实验指导书进行。
System.out.println("输入该年的月份:");
int monthTwo=read.nextInt( );
System.out.println("输入该月份的日期:");
int dayTwo=read.nextInt( );
Calendar calendar=【代码1】//初始化日历对象。
Java实验指导书(实验三)
实验三类与对象(一)一、实验目的1、掌握类与对象的基本概念;2、掌握类的声明、创建与使用方法;3、掌握类的构造方法的定义与使用方法4、掌握类的成员变量、成员方法的定义与使用方法;5、理解类变量、类方法与实例变量、实例方法的区别;6、理解Java中方法重载的实现方式。
二、实验要求1、根据实验步骤中提出的要求,使用记事本编写相应的Java程序;2、使用JDK中提供的javac以及java命令编译、运行自己所编写的Java程序;3、根据编译与运行过程中所获得的错误信息修改程序直至获得正确的结果;4、记录实验中遇到的各类问题并以及解决办法。
三、实验步骤1、类的声明、创建与使用(1)采用记事本编写下面所给的Java程序并保存为Circle.java;final static double PI;class Circle{PI=3.14;double r;double circumference(){return 2*PI*r;}double area(){return PI*r*r;}}(2)修改其中的错误,使其可以正确编译;(3)采用记事本编写下面所给的Java程序并保存为CircleTest.java;class CircleTest{public static void main(String args[]){Circle c=new Circle();System.out.printf("Area of the Circle is : %8.4f",c.area());}}(4)运行CircleTest查看结果。
(5)Java中变量都必须先赋值后使用,否则会出现编译错误(该变量未初始化),那么成员变量是否必须设定初值?2、构造方法(1)Circle类没有声明构造方法,那么语句Circle c=new Circle();中调用的构造方法Circle()会不会出错?为什么?(2)在Circle类中添加以下构造方法:Circle(double radius){r= radius;}(3)重新编译Circle.java之后(暂时不要重新编译CircleTest.Java),运行CircleTest将会出现什么错误?为什么?如何修改?3、类变量与类方法(1)在CircleTest类的main方法中添加以下代码:Circle c1=null;System.out.printf("PI is : %8.4f",c1.PI); //或Circle.PI(2)修改后编译运行是否会出错?为什么?(3)在Circle类中添加以下代码:static void setPI(double pi){PI=pi;this.r=3;}(4)重新编译Circle类会出现什么错误?为什么?如何修改?(5)修改CircleTest类的main方法为:Circle c1=null;System.out.printf("PI is : %8.4f\n",c1.PI);Circle c=new Circle(3);System.out.printf("Area of the Circle is : %8.4f\n",c.area());c1.setPI(3.1415926);System.out.printf("PI is : %8.4f\n",c1.PI);System.out.printf("Area of the Circle is : %8.4f\n",c.area());(6)上述代码将输出什么结果?通过阐述其执行过程说明出现该输出结果的原因。
java 实验三 控制语句 实验报告
a[i+1]=temp;
}
}
bubbleSort1(a,length-1);
}
}
该程序的执行结果截图如下:
该程序的类图截图如下:
实验3—4、猜数字游戏:请学习通用对话框以及随机数的生成。
实验要求:完成一个Java应用程序,实现下列功能:
1)程序随机分配给客户一个1—100之间的整数
实验3—1,复习熟悉流程控制的语法:请目测笔算出下列程序的执行结果。
此程序的运算结果为8.其代码及运算结果截图如下:
该程序的类图截图如下:
实验3—2,复习熟悉方法重载、函数返回以及异常处理:
(1)请目测以下程序能编译通过吗?若不能请问哪里有什么错误?
目测该程序不能运行,因为里面存在重复方法,类型不匹配,还有缺少方法的返回类型。
(2)输入的字符串如果不能转换成int类型,将产生NumberFormatException异常;
(3)当输入的字符串转换成int类型之后为负数时,在计算阶乘时,请抛出一个IllegalArgumentException异常;
(4)抛出自定义的异常;
(5)其他可能异常,也需要给出提示信息。
该程序的代码如下:
if(b/50!=0){System.out.println(b/50+"张5角");b-=(b/50)*50;}
if(b/20!=0){System.out.println(b/20+"张2角");b-=(b/20)*20;}
if(b/10!=0){System.out.println(b/10+"张1角");b-=(b/10)*10;}
java实验报告(实验三)
北京林业大学2013 学年— 2014 学年第 2学期 Java程序设计基础实验报告书专业:电子班级: 11-2 姓名:王云飞学号: 101114110 实验地点:计算机中心任课教师:黄儒乐实验题目:自定义异常与异常处理,常用类使用实验环境: Windows2000/XP;局域网实验要求:1. 对所有实验内容中涉及到的命令均要亲自实践,对照实验指导书进行。
2. 把实验中出现的问题以及最后解决的情况反馈到实验报告中。
3. 程序作业的源代码要求反馈到实验报告中。
实验内容:1.自定义异常及使用(1)自定义一个异常类,命名为AuthException。
(2)设计一个LoginAuthCheck类,其中的verify(String username,String password)方法用于验证用户名和密码是否正确,如果用户名不是admin,密码不是123 ,则抛出AuthException异常,并通过AuthException对象传递错误信息。
(3)设计一个Example类,提示用户依次输入用户名,密码(使用Scanner类来实现),并通过LoginAuthCheck类的verify方法验证是否正确。
2. 比较日期的大小按模板要求,将【代码1】~【代码8】替换为Java程序代码。
DateExampleimport java.util.*;class DateExample{public static void main(String args[ ]){Scanner read=new Scanner(System.in);System.out.println("输入第一个日期的年份:");int yearOne=read.nextInt( );System.out.println("输入该年的月份:");int monthOne=read.nextInt( );System.out.println("输入该月份的日期:");int dayOne=read.nextInt( );System.out.println("输入第二个日期的年份:");int yearTwo=read.nextInt( );System.out.println("输入该年的月份:");int monthTwo=read.nextInt( );System.out.println("输入该月份的日期:");int dayTwo=read.nextInt( );Calendar calendar=【代码1】//初始化日历对象。
Java实验3
实验三方法签名、重载、递归【实验目的和要求】实验目的:熟悉JAVA中方法的定义和调用。
实验要求:掌握方法的声明和使用;掌握方法的返回值、理解处理返回多个结果的办法;掌握方法参数传递,理解数据类型参数传递和引用类型参数传递的异同;掌握方法重;掌握递归方法的设计。
【实验原理】方法的声明和使用、方法的返回值、方法参数传递、类的继承方法。
【实验步骤】1.方法的声明和使用、参数,返回值练习任务。
设计代码,通过方法实现上次实验同样功能任务。
(增加数组查找等任务,练习数组作为参数进行传递)理解main()方法的参数,设置参数,打印main()参数的字符串数组内容。
2.方法重载练习任务设计代码,编写多个重载的方法,实现数学基本运算功能,要求参数类型和个数可变。
3.方法递归练习任务设计编写一个递归方法(如fabonacci数列等),跟踪调试,理解栈的使用。
注:fabonacci数列递归只做基本练习要求,同时用“迭代”实现,并比较两者的运行速度,在实际编程任务中代码编写中还是应“迭代”实现。
4.对象数组比较和排序。
(较高要求)注:类还没有正式学,可只要求用方法实现数组排序。
实验一:import java.util.Scanner;public class lz {public static boolean mima(String name,String password){boolean flag=false;if(name.equals("xxx")&&password.equals("123")) {flag=true;}else {flag=false;}return flag;}public static void main(String[] args){int i=3;while(i>0) {System.out.println("输入帐户名和密码");Scanner sc=new Scanner(System.in);String name=sc.next();String password=sc.next();if(mima(name,password)) {System.out.println("进入系统");break;}else {System.out.println("错误");i--;System.out.println("还有"+i+"机会");if(i==0) {System.exit(0);}}}}}实验截图:实验二:import java.util.Scanner;public class lz {public static void main(String [] args){System.out.println("请分别输入三个数,每个数以回车结束:");Scanner sc=new Scanner(System.in);float a=sc.nextFloat();float b=sc.nextFloat();float c=sc.nextFloat();float sum1=add(a,b);float sum2=add(a,b,c);System.out.println("sum1="+sum1);System.out.println("sum2="+sum2);}public static float add(float a,float b){return a+b;}public static float add(float a,float b,float c) {return a+b+c;}}实验截图:实验三:public class lz {public static void main(String[] args) {int sum=getSum(4);System.out.println("sun="+sum);}public static int getSum(int n){if(n==1){return 1;}int temp=getSum(n-1);return temp+n;}}实验截图:实验四:import java.util.Scanner;public class lz {public static void main(String[] args) {int[]arr= {7,9,66,4,18};System.out.print("冒泡排序前:");printArray(arr);bubbleSort(arr);System.out.print("冒泡排序后:");printArray(arr);}public static void printArray(int[] arr) {for (int i=0;i<arr.length;i++) {System.out.print(arr[i]+" ");}System.out.print("\n");}public static void bubbleSort(int[] arr) {for (int i=0;i<arr.length-1;i++) {for (int j=0;j<arr.length-i -1;j++) {if(arr[j]>arr[j+1]) {int temp=arr[j];arr[j]=arr[j+1];arr[j+1]=temp;}}System.out.print("第"+(i+1)+"轮到后排:");printArray(arr);}}}实验截图:。
Java综合实验报告_3
面向对象程序设计综合性实验(一)系统分析:本系统为学生考试成绩分析系统,系统要求可以让用户输入若干学生的基本信息、课程信息,还有对应的课程成绩。
而主要功能则是可以实现按条件进行相应学生的成绩查询和按条件进行成绩的分析,并且能够通过绘制柱状图与圆饼图来显示相应结果。
因此,我设计了3个保存数据的类,分别是年级班级类、学生类以及课程类,其中学生类继承了课程类,而年级班级类则继承学生类。
每当新建一条信息(一个学生的信息),则新建一个年级班级类,在内部会自动新建一个学生类以及课程类,用于记录一个学生的信息。
本系统采用了窗口GUI来实现,因此大量采用了按钮、文本框、单选按钮、滚动窗口等等,所以必不可少的当然是不少的监听器与对应的实现方法。
(二)系统设计:1.基本数据:Class—Grade : String—major : String—classname : String—Student : Student+getGrade() : String+getStudent() : Student+getClassname() : String+getMajor() : String+setGrade(Grade : String) : void+setClassname(classname : String) : void +setMajor(major : String) : voidStudent—StudentID : String—StudentName : String—Course : Course—couseMark : double+getCourse() : Course+getCouseMark () : double+getStudentID () : String+getStudentName () : String+setCouseMark (couseMark : double) : void+setStudentID (StudentID : String) : void+setStudentName (StudentName : String) : voidCourse—coureNumber : String—courseName : String—coureScore : double—courseHour : double+getCoureNumber () : String+getCoureScore () : double+getCourseHour () : double+getCourseName () : String+setCoureNumber (coureNumber : String) : void +setCoureScore (coureScore: double) : void+setCourseHour (courseHour: double) : void+setCourseName(courseName : String) : voidjava.io.Serializable2.主要方法实现及其他类(总共有20个,简单罗列5个):(三)系统实现:1.显示全部信息:利用窗口进行显示,而该窗口由菜单栏、滚动窗口、单选按钮和复选按钮组成。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
学生实验报告
实验课程名称J2EE及JAVA程序设计
开课实验室DS1502
学院软件年级专业班
学生姓名学号
开课时间至学年第学期
总成绩
教师签名
软件学院制
《J2EE及JAVA程序设计》实验报告
开课实验室:2012年6月4日
学院
软件学院
年级、专业、班
姓名
成绩
课程
名称
J2EE及JAVA程序设计
实验项目
名称
System.out.println("\n在mathod中抛出一个异常");
throw new IllegalAccessException();
}
public static void main(String args[]) {
try {
methodA();
}
catch (IllegalAccessException e) {
7.创建自定义的异常类
三、环境要求
已安装NetBeans IDE。
四、实验步骤
1.异常类型匹配编程
(1)程序功能:
在程序中主动产生一个ArithmeticException类型被0除的异常,并用catch语句捕获这个异常。最后通过ArithmeticException类的对象e的方法getMessage给出异常的具体类型并显示出来。
程序Exp5_5中的methodA方法中使用throws子句抛出异常,在main方法中捕获处理异常。
(2)编写源程序。
示例程序源代码:
import java.io.*;
public class EXP5_5{
static void methodA() throws IllegalAccessException {
3.包含多个catch子句的异常处理编程
(1)程序功能:
在try子句中设计两个可能出现的异常:一个是ArithmeticException异常,当a为0时会发生异常;另外一个是IndexOutOfBoundsException的异常,因为数组c的长度为1,因此给c[1]赋值是错误的。通过两个catch子句分别来捕获异常。
methodB();
}
}
}
(3)编译并运行程序,观察程序打印输出的信息。
(4)通过IDE的逐步调试(Step Debug)的功能,逐句调试执行程序,同时观察IDE输出窗口的程序打印输出信息。
7.创建自定义的异常类
(1)程序功能
通过继承Exception异常类创建一个自定义异常类MyException,然后再创建一个主类EXP5_7使用自定义异常类MyException。
(3)编译并运行程序,观察程序打印输出的信息。
(4)通过IDE的逐步调试(Step Debug)的功能,逐句调试执行程序,同时观察IDE输出窗口的程序打印输出信息。
(5)试着怎样执行程序可使得程序不抛出ArithmeticException异常。
4.使用throw子句抛出异常
(1)程序功能:
在上面的实验中,可以发现,异常对象是Java运行时由系统抛出的。抛出异常也可以通过使用throw语句实现。throw是Java语言的关键字,用来告知编译器此处要发生一个异常。throw后面要跟一个新创建的异常类对象,用于指出异常的名称和类型。
System.out.println("异常是:"+e.getMessage());
}
finally {
System.out.println("finally语句被执行");
}
}
}
(3)编译并运行程序,观察程序打印输出的信息。
(4)通过IDE的逐步调试(Step Debug)的功能,逐句调试执行程序,同时观察IDE输出窗口的程序打印输出信息。
System.out.println("异常是:"+e.getMessage());
}
finally {
System.out.println("finally语句被执行");
}
}
}
(3)编译并运行程序,观察程序打印输出的信息。
2.异常类型不匹配编程
(1)程序功能:
EXP5_2程序试图捕获一个异常类为IndexOutOfBoundsException的异常,但发生的异常却是ArithmeticException类,所以,程序可以通过编译但在运行时,系统会给出异常报告:报告所发生的但没有被捕获的异常。不过在此之前,其它语句和finally语句将会被执行。
static void mathod(int a) throws MyException {
System.out.println("\t此处引用mathod ("+a+")");
if (a>10) throw new MyException(a); //主动抛出MyException
System.out.println("正常返回");
System.out.println("mathodB正常返回");
return;
}
finally {
System.out.println("执行mathodB的finally");
}
}
public static void main(String args[]) {
try {
methodA();
} catch (Exception e) {
Java异常处理与包装类
指导教师
教师评语
教师签名:
年月日
一、实验目的
1.掌握Java的异常处理机制。
2.掌握包装类的使用。
3.Java SDK的使用。
二、实验内容
1.异常类型匹配编程
2.异常类型不匹配编程
3.包含多个catch子句的异常处理编程
4.使用throw子句抛出异常
5.使用throws子句
6.使用finally子句
五、实验过程原始记录(数据、图表、计算等)
1.异常类型匹配编程
2.异常类型不匹配编程
3.包含多个catch子句的异常处理编程
4.使用throw子句抛出异常
5.使用throws子句
6.使用finally子句
7.创建自定义的异常类
System.out.println("\t发生的异常为:"+e.toString());
}
System.out.println("这里可执行其它代码");
}
}
(3)编译并运行程序,观察程序打印输出的信息。
(4)通过IDE的逐步调试(Step Debug)的功能,逐句调试执行程序,同时观察IDE输出窗口的程序打印输出信息。
(4)通过IDE的逐步调试(Step Debug)的功能,逐句调试执行程序,同时观察IDE输出窗口的程序打印输出信息。
(5)修改源程序代码,通过throw语句使得程序抛出一个IndexOutOfBoundsException异常。
5.使用throws子句
(1)程序功能
throws子句一般用来表明在使用该方法时可能抛出异常但不捕获的异常。异常由系统来处理。throws语句申明抛出的异常可以是RuntimeException,也可以是自定义异常类。
System.out.println("在main中捕获异常:"+e);
}
}
}
(3)编译并运行程序,观察程序打印输出的信息。
(4)通过IDE的逐步调试(Step Debug)的功能,逐句调试执行程序,同时观察IDE输出窗口的程序打印输出信息。
(5)在main方法中调用methodA方法时,不使用try-catch语句会有什么问题?请修改源程序代码,重新编译并运行,观察IDE输出窗口会出现什么信息?
c[1]=99;
}
catch (ArithmeticException e) {
System.out.println("发生了被0除:"+e);
}
catch (ArrayIndexOutOfBoundsException e) {
System.out.println("数组下标越界:"+e);
}
}
}
(2)编写源程序。
示例程序源代码:
public class EXP5_4 {
static void throwProcess() {
try {
throw new NullPointerException("空指针异常");
}
catch (NullPointerException e) {
System.out.println("\n在throwProcess方法中捕获"+e.getMessage());
throw e;
}
}
public stat
try {
throwProcess();
}
catch (NullPointerException e) {
System.out.println("再次捕获:"+e);
}
}
}
(3)编译并运行程序,观察程序打印输出的信息。
(2)编写源程序。
示例程序源代码:
class MyException extends Exception {
private int x;
MyException(int a) {
x=a;