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();

	}

}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值