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第三次实验完整版
实验报告
院(系): 计算机科学学院
专业年级 : 电子信息科学与技术1403班姓名 : 卢丽琼
学号 : 21409030312
2016年 12 月 26 日
实验三JDBC编程
一、目的
通过Java数据库访问程序的编写、调试,使学生掌握JDBC编程的基本方法,熟悉常用的JDBC API,促进学生对概念的理解,培养动手能力。
二、基本要求
学生需要按时达到指定实验室上机。
调试教学中使用的程序示例,并加以修改,增加程序的功能;实现数据库访问的优化。
完成实验后,需要按时提交实验报告。
三、实验内容
1)复习数据库SQL语句的编写。
2)编写(JavaODBC-JDBC驱动)公共模块。
3)建立数据库应用模型,对数据库进行操作。
4)调试程序,实现数据库的访问。
四:实验步骤与结果
五:实验心得
通过本次试验,我了解了JDBC的基本概念并且深入了解了其注册方法,我明白了如何调用数据库,怎样建立数据库,以及数据库的基本架构,更深入的了解了JA V A.。
Java实三报告
浙江万里学院实验报告课程名称: 面向对象程序设计实验名称: 数据库的连接:JDBC* 专业班级: 电子商务112班 姓名: 陈依丽 学号: 2011014732 实验日期: 2013.12 实验3 数据库的连接:JDBC*一、实验目的了解JDBC 核心API ,利用JDBC 核心API ,建立数据库连接、执行SQL 语句、取得查询集、数据类型支持等功能。
二、实验要求了解JDBC 的概念和工作原理。
掌握使用JDBC 实现简单的数据库管理。
三、实验内容(一)配置ODBC 数据源1. 从开始菜单中,选择设置|控制面板。
2. 在控制面板中选择"32位 ODBC"。
3. 打开"32位 ODBC"后,看到的应该是一个卡片式对话框,上面一排有多个卡片标签,其中包括"用户DSN"、"系统DSN"、"文件DSN"等等。
选择"系统DSN"。
4. 单击"系统DSN"中的"添加…"按钮,弹出一个对话框。
5. 在对话框中,列出了当前系统支持的ODBC 数据源的驱动程序,选择"Microsoft Access Driver",单击"完成"按钮,弹出一个对话框。
6. 在对话框中,向"数据源"文本框内输入数据源的名字,这个名字可以任取,在这个例子中,我们输入的名字是"vfox"。
然后,单击"创建"按钮。
7. 在对话框中,选择数据库存放的目录,然后向"数据库名"文本框内输入数据库的名字,这个名字可以任取,在这个例子中,我们输入的名字是"vfox"。
然后,8. 单击"确定"按钮,会弹出显示"数据库创建成功"的对话框。
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实验三2 (2)
}
}); button.setBounds(157, 150, 93, 23); frame.getContentPane().add(button); } }
}
6 数据结果
7 实验心得与体会 学习怎么样自定义自己的异常类,并且加以异常处理,处理过程中的判断异常的方法各
异,开始的时候想到的是直接将字符串转换成字符加以判断,后来了解到运用正则表达式判 断更加简单。所以采用了此方法。
}); }
/** * Create the application. */ public Myexception() {
initialize(); }
/** * Initialize the contents of the frame. */ private void initialize() {
User user=new User(str,temp); String str1=textField_1.getText(); user.login(str1); JOptionPane.showMessageDialog(null, "登陆成功!!!"); System.out.println("登陆成功!!!"); } catch (Exception e) {
} }
Passwordexception.java
package password;
import javax.swing.JOptionPane;
public class Passwordexception extends Exception { /** * */ private static final long serialVersionUID = 895369008406366883L; Passwordexception(int l){ JOptionPane.showMessageDialog(null, "字符个数不合!"); } Passwordexception(String str){ JOptionPane.showMessageDialog(null, "“"+str+"”"+"含有非法字符!"); }
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
实验三内部类、常用类及异常类的用法1.实验目的(1)掌握Java中内部类的用法、异常类的用法(2)掌握Java中String类常用方法、StringBuilder类的用法;(3)掌握System类、Date类、Calender类、DateFormat类、NumberFormat类、Random类与BigInteger 及BigDecimal类的用法;(4)掌握Java中正则表达式的基本用法;2.实验内容实验题1修改实验二实验题4,声明一个局部变量String text = "";然后通过循环把数组中的成员(有序)添加到text中,修改方法JOptionPane.showMessageDialog();参数以显示text。
package .nwsuaf.jp.p4.data;publicabstractclass Product implements Comparable<Product>{protected String name;protectedfloat price;protectedstaticint count;public Product(String name, float price) {super(); = name;this.price = price;count++;}public StringgetName() {return name;}publicvoid setName(String name) { = name;}publicfloat getPrice() {return price;}publicvoid setPrice(float price) { this.price = price;}publicstaticint getCount() {return count;}publicstaticvoid setCount(int count) { Product.count = count;}publicint compareTo(Product p){returnnewFloat(p.getPrice()).compareTo(price);}}package .nwsuaf.jp.p4.data;import .nwsuaf.jp.p4.data.Product; publicclass Mobile extends Product{public Mobile(String name,float price){ super(name,price);}@Overridepublic StringtoString() {return name+price+"RMB";}}package .nwsuaf.jp.p4.data; import .nwsuaf.jp.p4.data.Product;publicclass Mp3Player extends Product{ publicint memory;public Mp3Player(Stringname,int memory,float price){ super(name,price);this.memory=memory;} publicint getMemory() { return memory;} publicvoid setMemory(int memory) { this.memory = memory;} @Overridepublic String toString() { return name+"("+memory+"MB),"+price+"RMB";} }package .nwsuaf.jp.p4;import java.util.Arrays;import javax.swing.JOptionPane;import .nwsuaf.jp.p4.data.Mp3Player; import .nwsuaf.jp.p4.data.Mobile; import .nwsuaf.jp.p4.data.Product; publicclass Store {publicstaticvoid main(String[] args) { Mobile m1=new Mobile("E365 on China Mobile", 1780.0f);Mobile m2=new Mobile("M330 on China Mobile", 1450.0f);Mp3Player p1=new Mp3Player("MeizoX3", 256, 399.0f);Mp3Player p2=new Mp3Player("MeizoE5", 512, 580.0f);Mp3Player p3=new Mp3Player("Xlive XM Mp3Player", 256, 930.0f);Product[] ps={m1,m2,p1,p2,p3};Arrays.sort(ps);String text="";for(int a=0;a<ps.length;a++){text+=ps[a].toString()+"\n";}JOptionPane.showMessageDialog(null,"The products are:"+"\n\n"+text+"\n\n"+"There are"+Product.getCount()+"products.");}}实验题2 用StringBuiler text = "";替换String text = "";然后通过循环使用StringBuiler类的append方法向text中把数组中的成员(按价格有序)添加到text中,修改方法JOptionPane.showMessageDialog()的参数以显示text。
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实验三
实验三实验项目一实验目的:掌握Java中包的使用。
实验要求:建立CircleUtil.java和ImportDemo.java两个源文件,编译源文件并运行主类。
具体要求如下:(1)在命令窗口编译以上源文件,生成的字节码文件均存放在当前目录下。
(2)在命令窗口编译以上源文件,生成的字节码文件均存放在当前目录下的classes文件中(需要事先在当前目录下手动建p立classes文件夹)。
(3)在命令窗口编译源文件CircleUtil.java,将生成的字节码文件存放在当前目录下的classes文件中;编译源文件ImportDemo.java,将生成的字节码文件存放在当前目录下。
补充练习:如果将CircleUtil 类的public 去掉,编译时会出现什么错误?实验项目二实验目的:掌握对象的组合及引用型参数。
实验要求:编写一个Java 应用程序,用类描述计算机中CPU 的速度和硬盘的容量。
具体要求如下:要求Java 应用程序有4个类,名字分别是PC ,CPU 和HardDisk 和Test ,其中Test 是主类。
PC 类与CPU 和HardDisk 类关联的UML 图如下图所示。
其中,CPU 类要求getSpeed()返回speed 的值;要求setSpeed(int m)方法将参数m 的值赋值给speed 。
HardDisk 类要求getAmount()返回amount 的值,要求setAmount(int m)方法将参数m 的值赋值给amount 。
PC 类要求setCUP(CPU c) 将参数c 的值赋值给cpu ,要求setHardDisk (HardDisk h)方法将参数h 的值赋值给HD ,要求show()方法能显示cpu 的速度和硬盘的容量。
主类Test 的要求:① main 方法中创建一个CPU 对象cpu ,cpu 将自己的speed 设置为2200,② main 方法中创建一个HardDisk 对象disk ,disk 将自己的amount 设置为200, ③ main 方法中创建一个PC 对象pc ,④ pc 调用setCUP(CPU c)方法,调用时实参是cpu ,⑤ pc 调用setHardDisk (HardDisk h)方法,调用时实参是disk , ⑥ c 调用show()方法。
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答案
Java程序设计与开发实验名称实验三. 分支与循环语句课程名称课程号技术计科专业计算机科学与技术学院(系)班级信息学院2015钟海楼年学生姓名实验地点学号实验日期 04019 229月日一、实验目的多分支语句;中的if-else if-else(1)学习掌握Java 循环语句解决问题。
分支和while)学习使用Java 程序中的if-else(2二、实验任务2的实验任务。
完成实验三指导上实验1、实验三、实验仪器设备和材料 PC机。
安装有J2SE开发工具的四、实验内容和步骤 1 回文数实验之间的数,程序将判断这个1~9999应用程序。
用户从键盘输入一个编写一个Java 数是几位数,并判断这个数是否是回文数。
代码如下:import class Number{ public static void main(String args[]){int number=0,d5,d4,d3,d2,d1;Scanner reader=new Scanner;);99999之间的数输入一个1至number=();if(number>=1&&number<=99999){d5=number/10000;d4=number_x0010_000/1000;d3=number_x0010_00/100;d2=number_x0010_0/10;d1=number_x0010_;if(d5!=0){);是5位数 if(d5==d1&&d4==d2){是回文数 );}else{); 不是回文数}}else if(d4!=0){); 是 4位数 if(d4==d1&&d3==d2){);是回文数}else{); 不是回文数}}else if(d3!=0){ 位数); 是3if(d3==d1){是回文数); }else{); 不是回文数}}else if(d2!=0){);2 位数是 if(d2==d1){);是回文数}else{不是回文数);}}else if(d1!=0){位数1); 是是回文数); }}else { ,number);之间至不在 \%d199999 }}}运行结果:课后的练习 2332,程序提示怎样的提示。
JAVA 实验三附答案
实验三 异常处理和基础类库 实验目的 1 学会利用 Try-catch-finally 语句来捕获和处理异常; 2 掌握自定义异常类的方法。 3 掌握 Java 基础类;熟悉 System 类; 4 掌握字符串的主要功能和使用方法 实验内容 1 编写一个应用程序将二进制数转换成十进制数,并捕获所有可能的异常 2 编写一个应用程序,接受命令行中给出的一个字母串,先将该串原样输出,然后判断该串 的第一个字母是否为大写,若是大写则统计该串中大写字母的个数,并将所有大写字母输出; 否则输出信息串”第一个字母不是大写字母!”。 提示: (1)命令行参数:java 应用程序能够从命令行接受任何数量的参数,在应用程序被加载的时 候允许用户指定配置信息。该参数是一个字符串数组,用来接收从命令行输入的参数。参数 之间使用空格隔开。Java 解释器会自动处理,把用空格隔开的各个参数通过 args 数组传递 给 main 方法。参数的下标从 0 开始,args[0]表示第一个参数,例:java Test args[0] args[1] args[2]
(2)用到一个方法 charAt,方法定义为 public char charAt(int index), 返回指定索引处的 char 值.无需自己编写,直接调用。例如 String s = “oh come on”;
charAt(0ห้องสมุดไป่ตู้的结果就是'o'了,参数是一个下标,从 0 开始到字符串长度-1
答案:
程序参考如下 1 见书 P129 2 public class Class1 {
public static void main(String {
int count=0; if(args.length!=0)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验三类与对象
1、(1)创建一个Rectangle类,添加两个(private)属性width与height
(2)创建一个构造方法,选择width与height为形式参数。
(3)在Rectangle类中添加两个方法计算矩形的周长和面积
2、创建三角形、梯形和圆形的类封装:分别定义三角形、梯形和圆形类,要求每个类中包含构造方法、求周长及面积的方法。
最后在主方法main中为三角形、梯形和圆形类创建对象并打印输出各种图形的周长及面积。
(一个文件中包含三个class和main)
a) Trangle类具有类型为double的三个边,以及周长、面积属性,Trangle类具有返回周长、面积以及修改三个边的功能。
另外,Trangle类还具有一个boolean 型的属性,该属性用来判断三个属能否构成一个三角形。
b) Lader类具有类型double的上底、下底、高、面积属性,具有返回面积的功能。
c) Circle类具有类型为double的半径、周长和面积属性,具有返回周长、面积的
功能。
3、编写下面程序写出运行结果,谈谈成员变量的继承与隐藏,方法的覆盖与重载。
上例内B继承了类A,在子类B中定义变量num2与父类A 同名,故在子类中父类成员变量num2被隐藏,故sum3=10+200=210;同时在子类B中父类A方法sum2()被重写(覆盖),使num2为子类定义值200,故sum4=50+200=250.
这个例子中,B是A的一个子类。
其中声明了一个和父类A同名的变量num2,并定义了与之相同的方法sum2,这时在子类B中,父类的成员变量num2被隐藏,程序第25行父类的方法sum2被重载。
于是子类对象所使用的变量num2为子类中定义的num2,子类对象调用的方法sum2( )为子类中所实现的方法。
4、理解下面3个类的定义,分析它们之间的关系,写出运行结果。
上例中,SubClass是SuperClass的一个子类。
其中声明了一个和父类SuperClass同名的变量x,并定义了与之相同的方法do something,这时在子类SubClass中,父类的成员变量x被隐藏,父类的方法do something被重写。
于是子类对象所使用的变量x为子类中定义的x,子类对象调用的方法do something( )为子类中所实现的方法。
程序第21行调用父类方法实现super.x的输出。
5、接口和继承的综合应用
首先定义一个接口(IShapeArea),其中包含返回面积的方法(getArea)。
然后定义一个矩形类(Rectangle)和一个圆类(Circle),并派生出一个正方形类(Square),即正方形类的父类为矩形类,三者都要求实现接口IShapeArea,自行扩充成员变量和方法(比如周长和面积)。
在主方法main中建一数组,数组中放入一些上述类型的对象,并计算它们的周长和面积之和。