Java学习记录(2)

前言

大二开始学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();

	}

}

猜你喜欢

转载自blog.csdn.net/beiyingC/article/details/108895775
今日推荐