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

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

【样例说明】
输入和输出的格式要和指定格式严格匹配,否则不得分。

【评分标准】 
结果完全正确得满分。

【备注】
从键盘读入double数据,可以用如下代码:
Scanner in = new Scanner(System.in);
double n = in.nextDouble();
使用Scanner类,需要导入import java.util.Scanner; 

方法1

package Test;

import java.util.Scanner;

public class Test3 {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		System.out.println("input c1:");
		double a1 = input.nextDouble();
		double b1 = input.nextDouble();
		System.out.println("input c2:");
		double a2 = input.nextDouble();
		double b2 = input.nextDouble();
		
		System.out.println("ComplexNumber a: " + a1 + " + " + b1 + "i");
		System.out.println("ComplexNumber b: " + a2 + " + " + b2 + "i");
		double c1 = a1 + a2;
		double c2 = b1 + b2;
		System.out.println("(a + b) = " + c1 + " + " + c2 + "i");
		double d1 = a1 - a2;
		double d2 = b1 - b2;
		System.out.println("(a - b) = " + d1 + " + " + d2 + "i");
		double e1 = a1 * a2 - b1 * b2;
		double e2 = a1*b2 + a2*b1;
		System.out.println("(a * b) = " + e1 + " + " + e2 + "i");
	}
}

方法2

import java.util.Scanner;

public class Complex {
	double a;
	double b;
	Complex(double a,double b){
		this.a=a;
		this.b=b;
	}
	Complex(){
		
	}
	public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
		try{ 
		System.out.println("input c1:");
		Complex c1=new Complex(in.nextDouble(),in.nextDouble());
		
		System.out.println("input c2:");
		Complex c2=new Complex(in.nextDouble(),in.nextDouble());

		System.out.println("ComplexNumber a: "+c1.a+" + "+c1.b+"i");
		System.out.println("ComplexNumber b: "+c2.a+" + "+c2.b+"i");
		System.out.println("(a + b) = "+(c1.a+c2.a)+" + "+(c1.b+c2.b)+"i");
		System.out.println("(a - b) = "+(c1.a-c2.a)+" + "+(c1.b-c2.b)+"i");
		System.out.println("(a * b) = "+(c1.a*c2.a-c1.b*c2.b)+" + "+(c1.a*c2.b+c1.b*c2.a)+"i");
          }
        finally{
         in.close();
               }
	}
}

 

【问题描述】定义一个描述三角形的类,名字为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

【样例输入2】
1
2
3

【样例输出2】
perimeter=0.0
area=0.0
a=0.0,b=0.0,c=0.0

【样例说明】
输入和输出的格式要和指定格式严格匹配,否则不得分。

【评分标准】 
结果完全正确得20分,每个测试点4分。

【备注】
从键盘读入双精度数,可以用如下代码:
Scanner in = new Scanner(System.in);
double n = in.nextDouble();
使用Scanner类,需要导入import java.util.Scanner; 

方法1

import java.util.Scanner;

public class   com {
    private double a,b,c;
    com(){};
    public   double getPerimeter() {
        return this.a+this.b+this.c;
    }
    public   double getArea() {
        double p=(this.a+this.b+this.c)/2;
        double sArea=Math.sqrt(p*(p-a)*(p-b)*(p-c));
        return sArea;
    }
    public   void setSide(double x,double y,double z) {
        this.a=x;
        this.b=y;
        this.c=z;
    }
    public com(double a,double b,double c) {
        if((a+b)<=c || (a+c)<=b || (b+c)<=a) a=b=c=0;
    }
    public  static void main(String[] args) {
        Scanner scan= new Scanner(System.in);
        double x=scan.nextDouble();
        double y=scan.nextDouble();
        double z=scan.nextDouble();
        com c= new com(x,y,z);
        if((x+y)<=z||(x+z)<=y|| (y+z)<=x) { }
        else {
            c.setSide(x, y, z);
        }
        System.out.println("perimeter="+c.getPerimeter());
        System.out.println("area="+c.getArea());
        System.out.println("a="+c.a+",b="+c.b+",c="+c.c);
    }
}

方法2

package com;
import java.util.*;

public class Triangle {
	

	private double a,b,c;
	
	double getPerimeter() {
		return this.a + this.b + this.c;
	}
	
	double gerArea() {
		double p = (this.a + this.b + this.c)/2;
		return Math.sqrt(p*(p-this.a)*(p-this.b)*(p-this.c));
	}
	public void setSide(double x, double y, double z) {
		this.a = x;
		this.b = y;
		this.c = z;
	}
	public  Triangle(double a, double b, double c) {
		if ((a+b)<=c || (a+c)<=b || (b+c)<=a) {
			a = b = c =0;
		}else {
			setSide(a, b, c);
		}
	}
	
	
public static void main(String[] args) {
	Scanner sc = new Scanner(System.in);
	double x = sc.nextDouble();
	double y = sc.nextDouble();
	double z = sc.nextDouble();
	Triangle s = new Triangle(x,y,z);

	System.out.println("perimeter=" + s.getPerimeter());
	System.out.println("area=" + s.gerArea());
	System.out.println("a=" + s.a + ",b=" + s.b + ",c=" + s.c);
}
}

总结:

1:没有void 需要返回  ;并且有void 才能在函数中被调用

2:this.a代表是这个类的实例的变量,该setA方法所属的类肯定有个a变量,this.a指的就是它,而后面的a是调用该方法是传进来的int a参数,其实这就是一个赋值语句。

3:在类里可以作属性成员实例化这样就可以每个方法都可调用 放在方法里就只能在方法里使用 定义成静态在其他类都可以调了哦

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值