实验目录

  • 题目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));
    }
}

【实验结果】

point类型java用什么接 point java_抽象类

题目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;
    }

    @Override
    public 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());
    }
}

【实验结果】

point类型java用什么接 point java_point类型java用什么接_02

题目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");
    }
}

【实验结果】

point类型java用什么接 point java_编程语言_03

题目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);
    }
}

【实验结果】

point类型java用什么接 point java_java_04

题目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;
    }
}

【实验结果】

point类型java用什么接 point java_编程语言_05

题目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]);
    }
}

【实验结果】

point类型java用什么接 point java_java_06

题目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 ;
    }

    @Override
    public double getArea() {
        double area;
        area = side*side;
        return area;
    }

    @Override
    public 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;

            @Override
            public double getArea() {
                double area = 3.14 * radiuis * radiuis;
                return area;
            }

            @Override
            public double getPerimeter() {
                double perimeter;
                perimeter = 2 * 3.14 * radiuis;
                return perimeter;
            }
        };
        for(Geometry i:geometries){
            System.out.println("面积为:"+i.getArea()+"  周长为:"+i.getPerimeter());
        }
    }
}

【实验结果】

point类型java用什么接 point java_抽象类_07

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