java实验三 类与对象的定义和使用

1.复数

此题注释很多,是为了对类进行一个更清楚的阐明与理解。如果注释有错的地方欢迎指正。

【问题描述】
创建一个复数类Complex,对复数进行数学运算,复数具有如下格式:realPart+imaginaryPart*i,其中,i为-1的平方根,具体要求如下:
(1)利用浮点变量表示此类的私有数据。提供两个构造方法,一个用于此类声明时对象的初始化;一个为带默认值得无参构造方法。
(2)提供两复数加、减、乘的运算方法。
(3)按格式(a,b)打印复数,其中a为实部,b为虚部。

【输入形式】
输入两个复数的实部和虚部,构造两个复数对象

【输出形式】
输出两个复数的相加、相减、相乘的结果

【样例输入】
input c1:
1 2
input c2:
3 4

【样例输出】
ComplexNumber a: 1.0 + 2.0i
ComplexNumber b: 3.0 + 4.0i
(a + b) = 4.0 + 6.0i
(a - b) = -2.0 + -2.0i
(a * b) = -5.0 + 10.0i

【代码实现】

import java.util.Scanner;

public class Complex {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);

        System.out.println("input c1:");
        double a1 = in.nextDouble();
        double a2 = in.nextDouble();
        System.out.println("input c2:");
        double b1 = in.nextDouble();
        double b2 = in.nextDouble();

        Comp x = new Comp(a1,a2);
        Comp y = new Comp(b1,b2);
        Comp z = new Comp();

        System.out.println("ComplexNumber a: "+x);
        System.out.println("ComplexNumber b: "+y);
        System.out.println("(a + b) = "+z.add(x,y)); //虽然我也感觉这样写很奇怪,但是只有使用Comp类才能使用里面的方法,用z是为了测试这一点。
        System.out.println("(a - b) = "+x.sub(x,y));
        System.out.println("(a * b) = "+x.mul(x,y));

    }
}

class Comp{
    /**
     * x,y 为Comp类的成员 ,并且拥有初始值,构造方法时,可以取其中的一部分或者全部作为参数,或者无参构造方法;
     *同时修饰为private,说明一旦声明就不能被更改,也不能被调用。
     * 下方将x定义为public是为了对比说明
     * 例如
     * Comp z = new Comp();
     *  System.out.println(z.x); 就不会报错
     *  但若写System.out.println(z.y); 就不能编译通过
     */
    public double x =1;
    private double y = 2;
    private  double z; // 例如这个z就没有被下面的构造函数使用

    /*
    以下两个均为构造方法
     */
    public Comp(double a1, double a2) { // 提供一个需要两个参数 a1,a2 的构造方法,通过此方法可以得到一个Comp类型的变量,
                                          // 在方法中,将a1,a2分赋值x,y(即Comp中的x成员与y成员)从而改变了Comp类中默认的成员值(x=1,y=2)
        x = a1;
        y = a2;
    }
    public  Comp() {  //提供一个无参的构造方法,通过此方法可以得到一个Comp类型的变量
    }

    @Override
    /**
     * 改写tostring方法,使得直接打印类时,不再是打印其地址
     */
    public String toString() {
        return  x +" + "+ y +"i";
    }

    /**
     * 以下三者均为普通方法,相当于函数
     */
    public Comp add(Comp a, Comp b){
        Comp c = new Comp();
        c.x = a.x + b.x;
        c.y = a.y +b.y;
        return c;
    }
    public Comp sub(Comp a, Comp b){
        Comp c = new Comp();
        c.x = a.x - b.x;
        c.y = a.y - b.y;
        return c;
    }
    public Comp mul(Comp a, Comp b){
        Comp c = new Comp();
        c.x = a.x*b.x - a.y*b.y;
        c.y = a.x*b.y+ a.y*b.x;
        return c;
    }
}

 

2.三角形类

【问题描述】定义一个描述三角形的类,名字为Triangle,属性有:
private double a, b, c;
方法有:
double getPerimeter(),计算三角形的周长
double getArea(),计算三角形的面积
public void setSide(double x, double y, double z),对属性a、b、c分别赋值为x、y、z
另外,有构造方法:
public Triangle(double a, double b, double c),如果a、b、c不能构成一个三角形,则a、b、c都赋值为0

【输入形式】三个数,表示三角形的三边长度。

【输出形式】三角形的周长、面积、以及三边的长度。

【样例输入1】
3
4
5

【样例输出1】
perimeter=12.0
area=6.0
a=3.0,b=4.0,c=5.0

【代码实现】

import java.security.PrivateKey;
import java.util.Scanner;

public class triangle_test {
    public static void main(String[] args) {


        Scanner in = new Scanner(System.in);

        double x = in.nextDouble();
        double y = in.nextDouble();
        double z = in.nextDouble();
   
        Triangel s = new Triangel(x,y,z);
        System.out.println("perimeter="+s.getPeerimeter());
        System.out.println("area="+s.getArea());
        System.out.println(s);
    }
}

class Triangel{
    private double a,b,c;

    @Override
    public String toString() {
        return "a=" + a + ",b=" + b + ",c=" + c ;
    }

    double getPeerimeter(){
        return a+b+c;
    }

    String getArea(){
        double p = (a+b+c)/2.0;
        double s = (p*(p-a)*(p-b)*(p-c));
        s = Math.sqrt(s);
        String ss = String.format("%.1f",s);
        return ss;
    }

    public Triangel(double x, double y, double z) {
        if (x+y>z && y+z>x && x+z>y) {
            a = x;
            b = y;
            c = z;
        } else {
            a = 0;
            b = 0;
            c = 0;
        }
    }

}

3.桌子类

【问题描述】
显示一张桌子的信息,包括桌子的形状(长方形、方形、圆形、椭圆形;使用Rect、Square、Circle、Ellipse)、腿数、高度、桌面面积。定义变量来保存桌子的信息,并显示各个信息的值。要点提示:
1)显示桌子信息:形状、腿数、高度、面积
2)注意各个变量的数据类型,桌子的形状可以用字符串String来存储。
【输入形式】
输入桌子各个属性的值。
【输出形式】
按照指定格式输出各个属性的值。

【参考代码】

import java.util.Scanner;

public class Desk {
    public static void main(String[] args) {
        Scanner  sc=new  Scanner(System.in);
        String  s=sc.nextLine();
        int  leg=sc.nextInt();
        int  hight=sc.nextInt();
        int  ar=sc.nextInt();
        Table  ta=new  Table(s,leg,hight,ar);
        System.out.println(ta);
        sc.close();
    }
}

class Table{
    String shape;
    int leg;
    int Hight;
    int Area;

    @Override
    public String toString() {
        return
                "Shape:" + shape + "\n"+
                "Legs:" + leg +"\n"+
                "Hight" + Hight +"\n"+
                "Area:" + Area ;
    }

    public Table(String s, int leg, int hight, int ar) {
        shape = s;
        this.leg = leg;
        Hight = hight;
        Area = ar;
    }

}

  • 9
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值