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