实验目录

  • 题目1
  • 题目2
  • 题目3
  • 题目4
  • 题目5
  • 题目6
  • 题目7

题目1

1.编写一个Point类,有x、y、z三个属性;
编写一个PointDemo类,并提供一个distance(Point p1,Point p2)方法用于计算两点之间的空间距离,实例化两个具体的Point对象并显示它们之间的距离。

Point.java

package 第一题;/*** @Author:大白* @Description:* @Date: Created in: 14:28 2018/5/3* @Modified By:*/public class Point {int x;int y;int z;Point(){}Point(int x,int y,int z){this.x = x;this.y = y;this.z = z;}
}

PointDemo.java

package 第一题;/*** @Author:大白* @Description:* @Date: Created in: 14:29 2018/5/3* @Modified By:*/public class PointDemo {public double distance(Point p1,Point p2) {double distance;distance = Math.sqrt(Math.pow((p1.x-p2.x),2)+Math.pow((p1.y-p2.y),2)+Math.pow((p1.z-p2.z),2));return distance;}
}

Test.java

package 第一题;
/*** @Author:大白* @Description:* @Date: Created in: 14:37 2018/5/3* @Modified By:*/public class Test {public static void main(String[] args){Point p1 = new Point(1,2,3);Point p2 = new Point(4,5,6);PointDemo pointDemo = new PointDemo();System.out.println("两点之间的距离为"+pointDemo.distance(p1,p2));}
}

【实验结果】

题目2

2.定义员工类Employee
(1)成员变量:职工号、姓名、性别、工龄、基本工资、交通补贴、午餐补助、奖金
(2)定义一个空构造方法和一个能够初始化所有成员变量的构造方法。
(3)定义统计实发工资总额的方法
(4)利用toString()方法返回员工的所有信息
(5)定义方法输出职工号、姓名、工龄、实发工资。

Employee.java

package 第二题;/*** @Author:大白* @Description:* @Date: Created in: 14:54 2018/5/3* @Modified By:*/public class Employee {int number;String name;String sex;int age;int basePay;int travelAllowance;int lunchAllowance;int bonus;Employee(){}Employee(int number, String name, String sex, int age, int basePay, int travelAllowance, int lunchAllowance,int bonus){this.number = number;this.name =name;this.sex = sex;this.age = age;this.basePay = basePay;this.travelAllowance = travelAllowance;this.lunchAllowance = lunchAllowance;}public int  salary(){int result;result = basePay + travelAllowance + lunchAllowance+bonus;return result;}@Overridepublic String toString() {return " 职工号: "+number+" 姓名: "+name+" 性别: "+sex+" 工龄: "+age+" 基本工资: "+basePay+" 交通补贴: "+travelAllowance+" 午餐补助: "+lunchAllowance+" 奖金: "+bonus;}public String get(){return " 职工号: "+number+" 姓名: "+name+" 工龄: "+" 实发工资: "+salary();}
}

Test.java

package 第二题;import static java.lang.System.*;/*** @Author:大白* @Description:* @Date: Created in: 15:32 2018/5/3* @Modified By:*/public class Test {public static void main(String[] args){Employee employee = new Employee(001,"黄意恒", "男",1,3000,200,500,1000);out.println("工资总额为:"+employee.salary());out.println("员工的所有信息为:"+employee);System.out.println("部分信息为:"+employee.get());}
}

【实验结果】

题目3

3.(1)抽象一个复数类
成员变量:实部real、虚部image;
构造方法:赋初值;
成员方法:加法运算 FuShu add(FuShu s1);
成员方法:打印输出复数
(2)Test类 主方法main:两个复数相加,输出结果。

FuShu.java

package 第三题;/*** @Author:大白* @Description:* @Date: Created in: 16:01 2018/5/3* @Modified By:*/public class FuShu {int real;int image;FuShu(){}FuShu(int real,int image){this.real = real;this.image = image;}public void output(){System.out.println("复数:"+real+"+"+image+"i");}public FuShu add(FuShu s1) {FuShu result = new FuShu();        //分配空间result.real = s1.real + this.real;result.image = s1.image + this.image;return result;}
}

Test.java

package 第三题;/*** @Author:大白* @Description:* @Date: Created in: 16:10 2018/5/3* @Modified By:*/public class Test {public static void main(String[] args){FuShu s1 = new FuShu(1,2);s1.output();FuShu s2 = new FuShu(3,4);s2.output();System.out.println("两个复数相加的结果为"+s1.add(s2).real+"+"+s1.add(s2).image+"i");}
}

【实验结果】

题目4

4.构造一个分数类Fraction,执行分数运算
(1) 用整型数表示类的private成员变量:x和y;
(2) 提供构造方法,将分子存入x,分母存入y;
(3) 提供两个分数相加、相减、相乘、相除的运算方法;
(4)以a/b的形式以及浮点数的形式打印Fraction数;(可以不考虑约减)
(5) 编写主控程序运行分数运算。

Fraction.java

package 第四题;/*** @Author:大白* @Description:* @Date: Created in: 16:24 2018/5/3* @Modified By:*/public class Fraction {int numerator;     //分子int denominator;   //分母int f(int a,int b) {        //求两个数a、b的最大公约数if(a<b) {int c = a;a = b;b = c;}int r = a%b;while(r != 0) {a = b;b = r;r = a%b;}return b;}void reset(int fenzi,int fenmu) {           //约分:求新的分子、分母int m = fenzi;int n = fenmu;if(fenzi<0) {m = -1*fenzi;}if(fenmu<0) {n = -1*fenmu;}if(fenzi == 0) {numerator = 0;denominator = 1;return;}int c = f(m,n);      //调用f函数,计算分子、分母的最大公约数numerator = fenzi/c;denominator = fenmu/c;if(numerator<0&&denominator<0) {numerator = -numerator;denominator = -denominator;}}int getnumerator() {          //得到分子return numerator;}int getdenominator() {        //得到分母return denominator;}Fraction add(Fraction r) {                            //加法运算int a = r.getnumerator();int b = r.getdenominator();int newNumertor = numerator*b + a*denominator;int newDenominator = b*denominator;Fraction result = new Fraction();result.reset(newNumertor, newDenominator);return result;}Fraction sub(Fraction r) {                            //减法运算int a = r.getnumerator();int b = r.getdenominator();int newNumertor = numerator*b - a*denominator;int newDenominator = b*denominator;Fraction result = new Fraction();result.reset(newNumertor, newDenominator);return result;}Fraction muti(Fraction r) {                            //乘法运算int a = r.getnumerator();int b = r.getdenominator();int newNumertor = numerator*a;int newDenominator = denominator*b;Fraction result = new Fraction();result.reset(newNumertor, newDenominator);return result;}Fraction div(Fraction r) {                            //除法运算int a = r.getnumerator();int b = r.getdenominator();int newNumertor = numerator*b;int newDenominator = denominator*a;Fraction result = new Fraction();result.reset(newNumertor, newDenominator);return result;}public static void main(String[] args) {Fraction r1 = new Fraction();Fraction r2 = new Fraction();r1.reset(3, 5);int r1fenzi = r1.getnumerator();int r1fenmu = r1.getdenominator();r2.reset(3,2);int r2fenzi = r2.getnumerator();int r2fenmu = r2.getdenominator();Fraction result = r1.add(r2);int resultFenzi = result.getnumerator();int resultFenmu = result.getdenominator();System.out.printf("\n%d/%d + %d/%d = %d/%d",r1fenzi,r1fenmu,r2fenzi,r2fenmu,resultFenzi,resultFenmu);result = r1.sub(r2);resultFenzi = result.getnumerator();resultFenmu = result.getdenominator();System.out.printf("\n%d/%d - %d/%d = %d/%d",r1fenzi,r1fenmu,r2fenzi,r2fenmu,resultFenzi,resultFenmu);result = r1.muti(r2);resultFenzi = result.getnumerator();resultFenmu = result.getdenominator();System.out.printf("\n%d/%d * %d/%d = %d/%d",r1fenzi,r1fenmu,r2fenzi,r2fenmu,resultFenzi,resultFenmu);result = r1.div(r2);resultFenzi = result.getnumerator();resultFenmu = result.getdenominator();System.out.printf("\n%d/%d / %d/%d = %d/%d",r1fenzi,r1fenmu,r2fenzi,r2fenmu,resultFenzi,resultFenmu);}
}

【实验结果】

题目5

5.抽象一个圆类
成员变量:半径;
成员方法:求面积;
抽象一个圆锥类
成员变量:圆锥的底为圆类的对象;
成员变量:高
成员方法:求体积。
主类
主方法main:通过赋值,打印圆锥体积。
三个类放在一个java文件中。

Test.java

package 第五题;/*** @Author:大白* @Description:* @Date: Created in: 19:45 2018/5/3* @Modified By:*/public class Test {public static void main(String[] args){Circle circle = new Circle(4);Cone cone =new Cone(circle,5);System.out.println("圆锥得到体积为:"+cone.volume());}
}class Circle {int radius;Circle(){}Circle(int radius){this.radius = radius;}public double area(){double result;result = 3.14*radius*radius;return result;}
}class Cone {Circle circle;double height;Cone(Circle circle,double height){this.circle = circle;this.height = height;}public double volume(){double result = 1.0/3*circle.area()*height;return result;}
}

【实验结果】

题目6

6.创建一个有理数的计算器:
实现时:
java Ex “3/4+1/5” 3/4+1/5=19/20
java Ex “3/4-1/5” 3/4-1/5=11/20
java Ex “3/41/5” 3/41/5=3/20

程序从命令行得到三个参数(操作数1,操作符,操作数2),显示该表达式以及算数运算的结果。
提示:使用String类的split方法来获取分子字符串和分母字符串,并使用Integer.parseInt方法将字符串转换为整数。

Counter.java

public class Counter {private static int[] X=new int[10];private static String[] array=new String[5];public static void main(String[] args) {/** @Author:大白* @Description:判断输入的字符串的运算规则,之后将输入的字符串按照加减乘符号分割,且按照特殊符号进行分割时,要加\\* @Data:10:54  2018/5/5*/if(args[0].contains("+")){array=args[0].split("\\+");           /*将输入的字符串按照+号分割,且按照特殊符号进行分割时,要加\\*/String f1[]=array[0].split("/");       /**将+号两边的分数按照/号进行分割*/String f2[]=array[1].split("/");splitArray(f1,f2);System.out.println(X[1]+"/"+X[2]+"+"+X[3]+"/"+X[4]+"="+((X[1]*X[4]+X[2]*X[3])+"/"+(X[2]*X[4])));}else if(args[0].contains("-")){String[] array=args[0].split("-");String f1[]=array[0].split("/");String f2[]=array[1].split("/");splitArray(f1,f2);System.out.println(X[1]+"/"+X[2]+"-"+X[3]+"/"+X[4]+"="+((X[1]*X[4]-X[2]*X[3])+"/"+(X[2]*X[4])));}else if(args[0].contains("*")){String[] array=args[0].split("\\*");String f1[]=array[0].split("/");String f2[]=array[1].split("/");splitArray(f1,f2);System.out.println(X[1]+"/"+X[2]+"*"+X[3]+"/"+X[4]+"="+((X[1]*X[3])+"/"+(X[2]*X[4])));}}private static void splitArray(String[] f1, String[] f2){/** @Author:大白* @Description:将分割后的字符串转换成int型* @Data:10:52  2018/5/5*/X[1]=Integer.parseInt(f1[0]);X[2]=Integer.parseInt(f1[1]);X[3]=Integer.parseInt(f2[0]);X[4]=Integer.parseInt(f2[1]);}
}

【实验结果】

题目7

7.设计一个名为Geometry的抽象类,其中有名为getArea()的抽象方法,getPerimeter的抽象方法
设计一个名为Square的类,继承Geometry类,重写两个抽象方法;
创建含有2个元素的Geometry类的数组,第一个元素为Square类的对象,第二个元素如下:
以匿名类的形式创建一个模拟Circle类的对象,继承Geometry类,重写两个抽象方法;
打印每个对象的面积,周长。

Geometry.java

package 第七题;/*** @Author:大白* @Description:* @Date: Created in: 19:54 2018/5/3* @Modified By:*/public abstract class Geometry {public abstract double getArea();public abstract double getPerimeter();
}

Square.java

package 第七题;/*** @Author:大白* @Description:* @Date: Created in: 19:56 2018/5/3* @Modified By:*/public class Square extends Geometry{double side;public Square(double side) {this.side =side ;}@Overridepublic double getArea() {double area;area = side*side;return area;}@Overridepublic double getPerimeter() {double perimeter;perimeter = 4*side;return perimeter;}
}

Test.java

package 第七题;/*** @Author:大白* @Description:* @Date: Created in: 20:03 2018/5/3* @Modified By:*/public class Test {public static void main(String[] args){Geometry[] geometries = new Geometry[2];geometries[0] = new Square(4.0);geometries[1] = new Geometry() {double radiuis = 4;@Overridepublic double getArea() {double area = 3.14 * radiuis * radiuis;return area;}@Overridepublic double getPerimeter() {double perimeter;perimeter = 2 * 3.14 * radiuis;return perimeter;}};for(Geometry i:geometries){System.out.println("面积为:"+i.getArea()+"  周长为:"+i.getPerimeter());}}
}

【实验结果】

实验小结:
本次实验共7题,通过这次实验学到了很多的知识,学会了toString的用法,还有String类的split方法和Integer.parseInt方法,也加深了对对象实例化的理解,但同时也发现一些问题,学过的知识容易忘记,有几题写过类似的题,但再一次写的时候却发现有些细节记不牢,比如第四题的分数加减乘除,对负数的处理以及约分的细节都有点忘记了。看来有些知识光靠记是不行的,得多动手才行,有些题得多写几遍。

JAVA技术及其应用实验三(抽象类和匿名类)相关推荐

  1. java实验八 内部类,匿名类

    实验八 内部类,匿名类 实验内容: (一)内部类.匿名类(必做) 1.三大体育媒体互联网平台,由于资源独占,有些类别的运动只能在某个平台上进行独播: 2.足球赛事只能在平台A上进行独播,篮球赛事只能在 ...

  2. java实验Java面向对象编程_java 实验三 面向对象程序设计(无脑实验系列)

    实验7 运算符重载 (1)定义日期类,重载 "++"和"--"运算符,使之能处理两个日期类对象自增和自减运算,并且自增和自减又分为前缀和后缀运算.(可继续完善. ...

  3. Java内部抽象类的匿名类初始化

    说在前面的话,以前写过一次这个变态代码,后来重构,把那个new的语法简化了,最近又要整,差点都想不起来了,留个文档把 1.下面这个案例更变态,抽象类还有一个个泛型类:首先内部抽象类的定义: /* * ...

  4. 22、接口与抽象类、匿名类的介绍

    文章目录 一.抽象类和接口的选择 二.接口中的默认方法 (1) 默认方法 默认方法细节 (2) 静态方法 三.匿名类(实用) (1) 匿名类细节 (2) 匿名类的应用(☆) ① 代码传递 ② 过滤器 ...

  5. java技术体系中的三个主要分支是_计算智能的三个主要分支及其应用

    1.摘要 在计算机科学领域, 一个最有意义, 也是空前困难的挑战性问题就是对人类智能的模拟.计算智能三借助现代计算工具模拟人的智能机制,生命演化和人工智能行为而进行的信息获取.处理(求解问题).利用的 ...

  6. 云计算技术与应用 - 实验三

    项目三 远程实践Git仓库设置及使用 本次实验采用在线平台:Kfcoding 目录 项目三 远程实践Git仓库设置及使用 仓库初始化 查看本地库状态 添加暂存区 提交本地库 忽视某些文件的提交 提交更 ...

  7. Java 8新特性(三):Optional类

    在上一篇介绍Stream流式数据处理的文章中提到了Optional类,这是Java 8新增的一个类,用以解决程序中常见的NullPointerException异常问题.本篇文章将详细介绍Option ...

  8. java 实现set,Java--Set的三个具体实现类

    HashSet HashSet继承AbstractSet类,实现Set.Cloneable.Serializable接口.其中AbstractSet提供Set接口的骨干实现,从而最大限度地减少了实现此 ...

  9. Java多线程和并发(三),Thread类和Runnable接口

    目录 1.Thread和Runnable接口 三.Thread类和Runnable接口 1.Thread和Runnable接口 转载于:https://www.cnblogs.com/xzmxddx/ ...

最新文章

  1. oracle 11所选安装,在red hat enterprise linux 5.4上安装oracle11g
  2. python 之 __new__ 方法理解
  3. javascript二维数组转置_精通Excel数组公式010:认识数组函数:TRANSPOSE、MODE.MULT和TREND...
  4. html5 烟雾,jQuery烟雾背景发生器(HTML5 Canvas插件waterpipe.js
  5. jax-rs注解工作原理介绍
  6. 为什么程序员老在改 Bug,就不能一次改好吗?
  7. 学习笔记---Javascript闭包
  8. MySQL字符串拼接函数使用
  9. mx350显卡天梯图_V6.00成为史上最短命显卡天梯图,V6.01新增MX450
  10. 董文永武汉大学计算机学院,武汉大学计算机学院博士生导师简介:董文永
  11. win7无法发现工作组计算机,系统之家win7系统在同一个工作组看不到其他电脑的解决方法...
  12. A Visual, Intuitive Guide to Imaginary Numbers
  13. 书论83 梁巘《承晋斋积闻录》
  14. Excel只删除开头和末尾空格,中间不管的2种操作
  15. w ndows 10关机,Win10设置定时开关机休眠唤醒的方法
  16. 重装系统 win10 原生最纯净的
  17. 认识电子计算机ppt幼儿园,大班科学优质课教案《认识电子计算器》含PPT课件
  18. 不是有效的win32应用程序_什么是模块,各种模块的有效行为(1)
  19. android 2d 字体描边,关于ios下字体描边的一个细节
  20. SOLIDWORKS如何实现系列化参数建模

热门文章

  1. clickhouse 离线安装
  2. 前端学HTTP之web攻击技术
  3. cat 链接并显示文件
  4. 《gitlab从零到壹》出现问题:代码合并,源分支会被删除解决方案
  5. HTML如何设置幻灯片大小和位置,PPT教程:教你如何在PPT母版中统一标题的位置、大小、样式 | 演示说...
  6. python lisp_给Lisp程序员的Python简介
  7. 从信息泄露到权限后台
  8. 金堂五月花计算机学校招聘,2019年成都市金堂五月花学校招生简介
  9. 数据结构(二)算法绪论
  10. 一个单点登录系统设计