java 矩阵求秩_java写入一个矩阵,如何编程求该矩阵的秩

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

Fraction.java如下:(这个是网上找来的,处理分数的类)

// 支持查找功能的分数类

class Fraction implements Comparable {

// 分子

private int numerator;

// 分母

private int denominator;

// 默认构造函数

public Fraction() {

}

// 该构造函数对分子和分母进行初始化

public Fraction(int n, int d) {

setFraction(n, d);

}

// 该构造函数支持将双精度数转换为相应的分数

public Fraction(double d) {

convertToFraction(d);

}

// 该函数可以将双精度数转换为相应的分数

private void convertToFraction(double d) {

int decimalCount = 1;

// 求双精度数的字符长度

int dLen = String.valueOf(d).length();

// 不断的将双精度数累乘10,直至转换为整数为止

for (int i = 0; i < dLen; i++) {

d = d * 10;

decimalCount *= 10;

}

// 分子为最终的整数乘积结果

numerator = (int) d;

// 分母为10的累乘结果

denominator = decimalCount;

// 约分

reduct();

}

// 分子的设置函数,并且约分

public void setNumerator(int n) {

numerator = n;

reduct();

}

// 分子的读取函数

public int getNumerator() {

return numerator;

}

// 分母的设置函数,并且约分

public void setDenominator(int d) {

// 检查分母是否为0

if (d == 0)

denominator = 1; //建议采用异常

else

denominator = d;

reduct();

}

// 分母的读取函数

public int getDenominator() {

return denominator;

}

// 分数的设置函数,并且约分

public void setFraction(int n, int d) {

setNumerator(n);

setDenominator(d);

reduct();

}

// 格式化字符信息输出

public String toString() {

// 如果为负分数,则将负号提前显示,分子和分母保留为正数,否则分子和分母皆取正数

if (numerator * denominator < 0)

return "-" + Math.abs(numerator) + "/" + Math.abs(denominator);

else

return Math.abs(numerator) + "/" + Math.abs(denominator);

}

// 利用对应小数值是否相同来判断分数是否相同

public boolean equals(Fraction f) {

if (numerator == f.numerator && denominator == f.denominator)

return true;

else

return false;

}

// 利用对应小数值的大小来判断分数的大小

public boolean isGreater(Fraction f) {

if ((double) numerator / denominator > (double) f.numerator

/ f.denominator)

return true;

else

return false;

}

// 约分函数

private void reduct() {

// 求分子和分母的最小值

int minValue = Math.min(Math.abs(numerator), Math.abs(denominator));

// 将小于分子和分母的最小值的数值,从大到小去除分子和分母,如果能够同时被整除,则以此数值约分并退出

for (int i = minValue; i >= 1; i--) {

if (numerator % i == 0 && denominator % i == 0) {

numerator = numerator / i;

denominator = denominator / i;

break;

}

}

}

// 返回分数相加的结果,并且约分

public Fraction add(Fraction f) {

Fraction fraction = new Fraction();

fraction.numerator = numerator * f.denominator + f.numerator

* denominator;

fraction.denominator = denominator * f.denominator;

fraction.reduct();

return fraction;

}

// 返回分数相减的结果,并且约分

public Fraction minus(Fraction f) {

Fraction fraction = new Fraction();

fraction.numerator = numerator * f.denominator - f.numerator

* denominator;

fraction.denominator = denominator * f.denominator;

fraction.reduct();

return fraction;

}

// 返回分数相乘的结果,并且约分

public Fraction multiply(Fraction f) {

Fraction fraction = new Fraction();

fraction.numerator = numerator * f.numerator;

fraction.denominator = denominator * f.denominator;

fraction.reduct();

return fraction;

}

// 返回分数相除的结果,并且约分

public Fraction divide(Fraction f) {

Fraction fraction = new Fraction();

fraction.numerator = numerator * f.denominator;

fraction.denominator = denominator * f.numerator;

fraction.reduct();

return fraction;

}

// 支持两个分数类变量的比较,以实现分数集合的查找功能

public int compareTo(Object o) {

Fraction f = (Fraction) o;

// 利用对应小数的大小来比较分数的大小

if ((double) numerator / denominator > (double) f.numerator

/ f.denominator)

return 1;

else if ((double) numerator / denominator < (double) f.numerator

/ f.denominator)

return -1;

else

return 0;

}

// 根据对应小数是否相同来判断分数是否相同

public boolean equals(Object obj) {

Fraction f = (Fraction) obj;

if (Math.abs((double) numerator / denominator - (double) f.numerator

/ f.denominator) < 0.00001)

return true;

return false;

}

// 相同数值的分数返回相同的哈希码

public int hashcode() {

String str = String.valueOf((double) numerator / denominator);

return str.hashCode();

}

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值