前言
大二开始学JAVA了,想把自己写的程序记录一下,见证自己的进步
任务
编写复数类,为该类定义构造函数和信息输出的方法。在测试类中建立复数数组,对输入的复数按照模的大小进行排序,并按照从大到小的顺序输出各个复数的值。
代码
代码如下:
1、一个ImaginaryNumber类,用来定义复数类。
import java.util.Scanner;//引入控制台赋值工具
public class ImaginaryNumber {
private int x;//实数
private int y;//虚数
private static int arraynum;//数组长度
private double modules;//模长
Scanner scan = new Scanner(System.in);//控制台赋值工具的新类
public static void set_arraynum(int a) {
arraynum = a;
}
public static int get_arraynum() {
return arraynum;
}
//计算并设置模长
public void set_modules() {
double sumofsquares = x * x + y * y;
modules = Math.sqrt(sumofsquares);
}
public double get_modules() {
return modules;
}
//一个冒泡排序使复数类按照大小排列
public static void sort(ImaginaryNumber[] a) {
for (int i = 0; i < a.length - 1; i++) {
for (int m = 0; m < a.length - i - 1; m++) {
if (a[m].get_modules() < a[m + 1].get_modules()) {
ImaginaryNumber temp;
temp = a[m];
a[m] = a[m + 1];
a[m + 1] = temp;//其实只互换了存地址的地方,内存中存真实值的地方并没有变化
}
}
}
}
public void set_x_value(int getnum) {
x = getnum;
}
public void set_y_value(int getnum) {
y = getnum;
}
public void output_imagnum(int m) {
System.out.println("第" + m + "个复数的值为:" + x + "+" + y + "i");
}
}
2、一个测试类,用来写main函数运行出结果
import java.util.Scanner;
public class TestImagNum {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("请输入想要创建虚数数组的长度");
int getnumber = scan.nextInt();
ImaginaryNumber.set_arraynum(getnumber);
ImaginaryNumber[] num = new ImaginaryNumber[ImaginaryNumber.get_arraynum()];
for (int i = 0; i < num.length; i++) {
num[i] = new ImaginaryNumber();
}
for (int i = 0; i < num.length; i++) {
System.out.println("请输入第" + (i + 1) + "个复数的实数部分的值");
num[i].set_x_value(scan.nextInt());
System.out.println("请输入第" + (i + 1) + "个复数的虚数部分的值");
num[i].set_y_value(scan.nextInt());
}
for (int i = 0; i < num.length; i++) {
num[i].set_modules();
}
ImaginaryNumber.sort(num);//排序
System.out.println("接下来由大到小输出复数的值");
for (int m = 0; m < num.length; m++) {
num[m].output_imagnum(m + 1);
}
scan.close();
}
}