博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java矩阵类_Java泛型——泛型矩阵类
阅读量:1539 次
发布时间:2019-04-21

本文共 1815 字,大约阅读时间需要 6 分钟。

Java泛型——泛型矩阵类

所有矩阵,加法和乘法操作都是类似,所以设计一个父类,不用管元素类型,目的描述所有类型的矩阵共享的通用操作

创建若干适用于指定矩阵类型的子类,实例:两种类型int和Rational的实现

1、GenericMatrix类

public abstract class GenericMatrix { protected abstract E add(E o1,E o2); protected abstract E multiply(E o1,E o2); protected abstract E zero(); public E[][] addMatrix(E[][]matrix1,E[][]matrix2){ if((matrix1.length!=matrix2.length)||(matrix1[0].length!=matrix2[0].length)){ throw new RuntimeException("The matrices do not have the same size"); } E[][] result=(E[][])new Number[matrix1.length][matrix1[0].length]; for(int i=0;i

2、IntegerMatrix类

public class IntegerMatrix extends GenericMatrix{ @Override protected Integer add(Integer o1, Integer o2) { return o1+o2; } @Override protected Integer multiply(Integer o1, Integer o2) { return o1*o2; } @Override protected Integer zero() { return 0; } }

3、RationalMatrix类

public class Rational extends Number{ private long numerator=0; private long denominator=1; public Rational(){ this(0,1); } public Rational(long num1,long num2){ long gcd=gcd(num1,num2); this.numerator=(num2>0?1:-1)*num1/gcd; this.denominator=Math.abs(num2)/gcd; } private static long gcd(long n,long d){ long n1=Math.abs(n); long n2=Math.abs(d); int gcd=1; for(int k=1;k<=n1&&k<=n2;k++){ if(n1%k==0&&n2%k==0) gcd=k; } return gcd; } public String toString(){ if(denominator==1) return numerator+""; else return numerator+"/"+denominator; } @Override public double doubleValue() { // TODO 自动生成的方法存根 return numerator*1.0/denominator; } @Override public float floatValue() { // TODO 自动生成的方法存根 return (float) doubleValue(); } @Override public int intValue() { // TODO 自动生成的方法存根 return (int) doubleValue(); } @Override public long longValue() { // TODO 自动生成的方法存根 return (long) doubleValue(); } public long getNumerator(){ return numerator; } public long GetDenominator().........

转载地址:http://oeady.baihongyu.com/

你可能感兴趣的文章
宏晶新推出的STC16单片机,有哪些方面的不足?
查看>>
硬件工程师常用的电路基础公式+换算!
查看>>
二极管的反向恢复过程
查看>>
增强嵌入式系统可靠性的几种方法
查看>>
公众号出了新功能
查看>>
精选汇总 | STM32、MCU、单片机
查看>>
精选汇总 | 科普知识
查看>>
精选汇总 | 开心一刻
查看>>
精选汇总 | IoT、物联网、人工智能
查看>>
C语言必须写main函数?最简单的 Hello world 你其实一点都不懂!
查看>>
软件项目中Debug 和 Release版本差异
查看>>
C语言编程时,各种类型的变量该如何初始化?
查看>>
视频 | 机械硬盘工作原理
查看>>
PCB走线角度选择,到底该不该90°?
查看>>
STM32F10x_ADC三通道DMA连续转换(3通道、软件单次触发)
查看>>
STM32F10x_SPI(硬件接口 + 软件模拟)读写Flash(25Q16)
查看>>
SPI_FLASH时序描述及驱动编程
查看>>
STM32F10x_模拟I2C读写EEPROM
查看>>
STM8S_006_AWU自动唤醒
查看>>
STM8S_007_片内FLASH和EEPROM编程
查看>>