【以前】作业思索:内部类以及double相加值

有关矩阵的计算 有关矩阵的计算 #include<iostream> #include<math.h> #include<iomanip> using namespace std; int used[10]={0}; int tmp_array[10]; int tmp_coffeicient[10]={0}; int result=0; class MATRIX{ private: int matrix[10][10]={{0}}; int tmp_mat 阅读详情
import java.math.BigDecimal;


public class MatrixCal {
    //内部类
	static class Matrix{                                                                                           //第一处
		private double[][] mat;
		private int nr,nc;
		public Matrix(int r,int c){
			if(r > 0 && c > 0)
				mat = new double[nr=r][nc=c];
			else{
				mat = null;nr = nc = 0;
			}
		}
		public Matrix(double[][] m){
			mat = m;
			nr = m.length;
			nc = m[0].length;
		}
		public double getElement(int i, int j){
			return mat[i][j];
		}
		public void setElement(int i,int j,double e){mat[i][j] = e;}
		public int rows(){return nr;}
		public int cols(){return nc;}
		public Matrix times(Matrix b){
			if(nc != b.nr)return null;
			Matrix p = new Matrix(nr,b.nc);
			for(int i = 0; i < nr; i ++)
				for(int j = 0; j < b.nc; j++)
					p.setElement(i, j, rowTimesCol(i,b.mat,j));
			return p;
		}
		private double rowTimesCol(int ri,double[][] b,int ci){
			double sum = 0.0d;
			double[] row = mat[ri];
			for(int k = 0; k < b.length; k++)
				sum += row[k]*b[k][ci];
			return sum;
		}
		public String toString(){
			StringBuffer buf = new StringBuffer();
			for(int i = 0; i < nr; i++){
				buf.append("(");
				for(int j = 0; j < nc - 1; j++)
					buf.append(mat[i][j]+" ");
				buf.append(mat[i][nc-1]+")\n");
			}
			buf.setLength(buf.length()-1);
			return new String(buf);
		}
		/*
		 * Lab要求实现的三个函数
		 */
		public Matrix plus(Matrix m,int mr,int mc){
			double[][] tmp = new double[mr][mc];
			if(nr != mr && nc != mc)return null;
			for(int i = 0; i < mr; i++)
				/**
				 *                                       第二处 采用BigDecimal格式化double值,避免出现错误的结果(比如3.2222222222222229)
				 */
				for(int j = 0; j < mc; j++){
					tmp[i][j] = mat[i][j] + m.mat[i][j];
					BigDecimal bigDecimal = new BigDecimal(tmp[i][j]);
					bigDecimal = bigDecimal.setScale(2,BigDecimal.ROUND_HALF_UP);
					tmp[i][j] = bigDecimal.doubleValue();
				}
			Matrix tmp_m = new Matrix(tmp);
			return tmp_m;
		}
		public Matrix minus(Matrix m,int mr,int mc){
			double[][] tmp = new double[mr][mc];
			if(nr != mr && nc != mc)return null;
			for(int i = 0; i < mr; i++)
				for(int j = 0; j < mc; j++){
					tmp[i][j] = mat[i][j] - m.mat[i][j];
					BigDecimal bigDecimal = new BigDecimal(tmp[i][j]);
					bigDecimal = bigDecimal.setScale(2,BigDecimal.ROUND_HALF_UP);
					tmp[i][j] = bigDecimal.doubleValue();
				}
			Matrix tmp_m = new Matrix(tmp);
			return tmp_m;
		}
		public Matrix minus(){
			for(int i = 0; i < nr; i++)
				for(int j = 0; j < nc; j++)
					this.mat[i][j] *= -1;
			return this;
		}
		public Matrix transpose(){
			Matrix m = new Matrix(nc,nr);
			for(int i = 0; i < nc; i++)
				for(int j = 0; j < nr; j++)
					m.mat[i][j] = this.mat[j][i];
			return m;
		}
	}
	public static void main(String[] args){
		double[][] a = {{1.0,2.0,1.5},{1.0,9.0,2.3}};
		double[][] b = {{6.7,3.4,2.3},{4.5,2.3,5.6}};
		Matrix ma = new Matrix(a);
		Matrix mb = new Matrix(b);
		Matrix m_plus = ma.plus(mb, 2, 3);
		Matrix m_minus = ma.minus(mb,2,3);
		Matrix m_tran = ma.transpose();
		System.out.println(m_plus);
		System.out.println("\n");
		System.out.println(m_minus);
		System.out.println("\n");
		System.out.println(m_tran);
	}
}















第一处的static如果去掉,会出现以下结果:

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
No enclosing instance of type MatrixCal is accessible. Must qualify the allocation with an enclosing instance of type MatrixCal (e.g. x.new A() where x is an instance of MatrixCal).


at MatrixCal.main(MatrixCal.java:102)

这是因为:

非静态嵌套类必须在外套类的非静态成员里构造。所以把Matrix设置成了static静态类。或者将内部类转为一个普通的类POJO。
第二处:
double值相加常常会发生错误,比如出现类似2.00000000000000000000009这样子的浮点数。
代码:
BigDecimal bigDecimal = new BigDecimal(tmp[i][j]);
					bigDecimal = bigDecimal.setScale(2,BigDecimal.ROUND_HALF_UP);
					tmp[i][j] = bigDecimal.doubleValue();
可以起到格式化的作用。
以上仅为作业思索所得,不保证理论的绝对正确。
openCL在GPU与CPU设备上的区别--计算E值 最近老是布置了个作业,让考虑计算E的不同并行算法和不同语言是想,于是考虑到了最近openCL的实现方式,之前也考虑了openMP及多线程的实现,这里只讨论openCL的实现及发现的问题,之后整理一下自己的文章,把所有的并行语言的计算E值的实现贴出来。 一、首先介绍两种计算E值并行结构       二、代码实现   1.多项式分段kernel     // Enter you 阅读详情

相关推荐

Linux:在使用UEFI固件的计算机上内核是如何被启动的

启动计算机通常不是一件难事:按下电源键,稍等片刻,你就能看到一个登录界面,再输入正确的密码,就可以开启一天的网上冲浪之旅了。但偶尔这件事没那么顺利,有时候迎接你的不是熟悉的登录界面,而是一个令人生畏的命令提示符界面,一闪一闪的提示符告诉你:“你碰到麻烦了”。于是你对着错误提示查找解决方法,按照网页上的步骤,你对着提示符输入并执行了几条你完全不理解的命令,计算机又能正常启动了,但同时你发现你那存有大学舍友糗照的硬盘分区被清空了。

imred的专栏 3069

Java嵌套类(nested class)----静态成员类、非静态成员类、匿名类和局部类

这四个修饰符的访问权限如下表:  -----------------------------------------------                        类内部     package内       子类         其他  public             允许         允许                 允许         允许  protec

ChangWen的博客 1710

从GitHub到海浪模拟:手把手教你配置WAVEWATCHⅢ 6.07.0的完整开发与测试环境

本文详细指导如何在Ubuntu系统中配置WAVEWATCHⅢ 6.07.0的开发与测试环境,涵盖虚拟机设置、依赖安装、源码编译及案例验证的全流程。通过步骤化教程,帮助科研人员快速搭建高效的海浪模拟平台,提升海洋数值模拟的研究效率。

weixin_42568801的博客 324

JAVA嵌套类:静态嵌套类和非静态嵌套类

1、内部类定义   内部类在维基百科的定义为: 面向对象编程中,内部类(又叫做嵌套类)是在另一个类或者接口中进行声明的类。内部类不同于子类(subclass)。(译者注:wiki的注解有误,内部类和嵌套类并不完全等同,详见下文。)   在Java中,上面的定义可以如下示例: 1 public final class Clazz { 2 private final...

215

你的Wi-Fi总断网?可能是DHCP租约到期惹的祸!手把手教你用Windows/路由器设置永久IP或延长租期

本文深入解析家庭Wi-Fi频繁断网的常见原因——DHCP租约到期问题,并提供Windows和路由器设置永久IP或延长租期的详细教程。通过对比静态IP配置与延长租期两种方案,帮助用户有效解决网络不稳定问题,特别适合游戏玩家和远程工作者优化家庭网络环境。

weixin_29305313的博客 1429

HUMAnN 3.0 (alpha)安装及使用

文章目录简介安装数据库下载运行参考 简介 安装 conda install humann humann_test (~1 minute) 数据库下载 humann_databases --download chocophlan full /path/to/databases --update-config yes humann_databases --download uniref uniref90_diamond /path/to/databases --update-config yes humann_

dys的博客 9505

静态嵌套类和非静态嵌套类的区别

package com.test.xml; /**  * @author du.qiang  * @version $Revision 1.1 $ 2010-6-23 上午06:48:28  */ public class OutClassTest {     static int a;     int b;     public static void t

weijinqian0的博客 652

故障处理:Oracle一体机磁盘故障时磁盘组重平衡失败的故障处理

摘要: Oracle Exadata一体机出现磁盘故障案例,存储节点故障灯未亮但磁盘已产生大量坏块,导致重平衡失败。文章强调了一体机硬件巡检需检查6个关键维度:节点messages日志、存储cell告警日志、CellCLI日志、ASM告警日志、ILOM日志及服务器信号灯。故障分析显示硬盘物理故障导致磁盘组冗余受损,自动修复流程受阻。文中详细记录了通过CellCLI工具排查损坏磁盘的过程,并提供了完整的故障处理流程和命令输出。文章同步发布于微信公众号"IT民工的龙马人生"和博客网站(www

提供数据库技术支持(系统优化,故障处理,安装升级,数据恢复等) 1231

MyMatrix我的矩阵的实现。

开发一个矩阵运算的 java 开发包,定义一个 MyMatrix 类 实现构造方法,矩阵加法,矩阵乘法,矩阵转置,打印函数 public MyMatrix(double[][] a); public MyMatrix plus(MyMatrix B); public MyMatrix times(MyMatrix B); public MyMatrix transpose(); public vo...

可及的小屋 1059

使用在UE5中使用AirSim插件Eigen库头文件引用报错,出现报错的解决方式

如图所示,用红线圈出的两条头文件引用会报错,提示无法找到他们,但是可以发现的是,他们的路径书写是没有问题的。在终端中运行时候,会出现如下的报错。

GFCLJY的博客 1006

YOLO11涨点优化:loss优化 | 一种新的基于Wasserstein距离的小目标检测评估方法,助力小目标涨点

提出了一种新的基于Wasserstein距离的小目标检测评估方法,通过它们对应的高斯分布计算它们之间的相似性

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 1018

案例分析:遍历map 内部元素相加

最近开发中遇到一个问题,就是多设备 Long 对应了一组数据 Double[],Double[]又是个多列数组,但是列数相同。期望是将Double[]相同列的值求和合并,并输出一个 求和后的Double[]。遍历Map devPowerMap 将其中的double[]相同索引的相加 输出一个新的Double。目前这个问题是解决了,那我们再扩展一下,相同索引求和是一种场景。大家可以思考一下,试试看~

ahauedu的专栏 659

华为OD机考双机位C卷 - 信道分配(Java & Python& JS & C/C++ & GO )

华为OD机考双机位C卷 - 信道分配

算法大师! 453

作业06-接口、内部类

1. 本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装、继承、多态为核心概念画一张思维导图或相关笔记,对面向对象思想进行一个总结。 2. 书面作业 1. clone方法 1.1 在test1包中编写Employee类,在test2包中新建一个Test类,并在其main中新建test1包中的Employee的对象,然后使用clone方法克隆一个新对象,能否成功?为什么...

weixin_30765475的博客 338

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

基于Dueling Double DQN的自适应作业车间调度研究

文献阅读笔记

qq_58327317的博客 2132

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

MaxCompute的SQL计费预估整理(只看标准SQL作业和SpotSQL作业)

虽然在DataWorks工作台和数据分析台有估算费用功能,但是如果从其他地方查询(比如公司的可视化平台)是没办法使用估算功能看每一条数据费用的。基于此进行MaxCompute的SQL计费预估整理。P.S.:费用预估是按照MaxCompute的SQL作业按量付费来进行计算和统计的。

weixin_41009521的博客 1719

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

2025 斯坦福大学 Code in Place Week4 [Double it] 作业【个人代码参考】

代码作业分享

m0_68811478的博客 369

金钱使用 double 的已经被公司开除了,要使用 BigDecimal

点击上方“Java基基”,选择“设为星标”做积极的人,而不是积极废人!源码精品专栏原创 | Java 2019 超神之路,很肝~中文详细注释的开源项目RPC 框架 Dubbo 源码解析...

weixin_44421461的博客 221

【0624课外作业】将一个double类型的小数,四舍五入保留两位小数

1 package com.work0624; 2 /** 3 * 课外作业 4 *将一个double类型的小数,四舍五入保留两位小数 5 * @author L 6 * 7 */ 8 import java.util.Scanner; 9 10 public class Kwork1 { 11 static Scanner ...

weixin_30501857的博客 289

19-6/24作业: 将一个double类型的小数,按照四舍五入保留两位小数

☞要求 将一个double类型的小数,按照四舍五入保留两位小数 ☞实现方式 1.获得一个double类型的小数 2.使用BigDecimal包的setScale进行操作 3.输出结果 ☞代码内容 package circulation;/** * @author 9527 *///导入扫描的包import java.util.Scanner;//导入小数包import...

weixin_30832983的博客 178

C#程序编写 • 【第2章 类与对象实现,两数相加】

本章节总结 返回作业目录 练习一 <类与对象实现,两数相加> 效果图: 定义类,在里面添加两个相加的数,和相加的方法 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace day2_03 { class day03_02 { /添加两个数的属性 pu

冯上 2011

两数相加求和输出实验报告

Java课后作业博文 1.设计思想:在Eclipse中没有像C++那样的cin>>的简单输入的方法,不过Java5.0以上的版本都提供了Scanner类来完成从控制台来输入数据。当通过newScanner(System.in)创建一个Scanner,控制台会一直等待输入,直到敲回车键结束,把所输入的内容传给Scanner,作为扫描对象。如果要获取输入的内容,则只需要调用S...

agt30483的博客 733

类型转换Double类型比较格式化输出作业20210111

张三上班 张三在上班途中, 可以选择走路和汽车两种方式 但他不清楚哪种方式比较快, 因为骑车需要找车, 开锁, 停车 需要耽搁很多时间. 设找到自行车, 开锁, 骑上自行车需要花27秒, 停车需要花23秒 步行每秒1.2米, 骑车每秒3.0米 给出张三距离公司的距离, 请问是骑车快还是走路快. 输入: 一个整数, 表示到公司的距离 输出: 如果骑车快, 输出"建议骑车" 如果走路快, 输出"建议走路" 如果一样快, 输出"骑车或走路都行" public class Task111 { public ..

元气少女帕吉 256

基于深度强化学习的自适应作业车间调度问题研究

获取更多资讯,赶快关注公众号(名称:智能制造与智能调度,公众号:deeprlscheduler)吧! 文章目录1、论文贡献2、论文框架3、调度环境4、调度问题转化状态特征表达系统动作定义报酬函数设计探索和利用策略5、深度强化学习调度算法6、超参数灵敏度分析7、训练过程8、实验结果 今天给大家带来一篇我们关于使用深度强化学习求解作业车间调度问题的新作:Han, B. A., & Yang, J. J.(2020). Research on Adaptive Job Shop Scheduling P.

松间沙路的博客 1万+

Java 匿名内部类实战

匿名内部类提供了快速实现回调逻辑的语法手段,是 Java 基础中实用的编程技巧。本次通过方法耗时统计案例,掌握了匿名内部类的使用场景与封装思路,理解了通用工具的设计思想,为后续更高级的函数式编程、切面编程打下基础。

2601_96150923的博客 45

c语言对浮点数的处理默认是double吗,C语言中浮点数float和double输出的问题

C语言中浮点数float和double输出的问题关注:260答案:6信息版本:手机版解决时间 2019-01-12 07:33斑駁影2019-01-11 09:20#includevoid main(){float num;double dnum;num=563.23;dnum=78954327.07;printf("num=%f",num);printf("\ndnum=%lf",dnu...

weixin_39774491的博客 1958
上一篇: Java虚拟机原理、内存分配和回收机制
下一篇: #测试相关#Getting “junit.framework.AssertionFailedError: Forked Java VM exited abnormally” Exception
louis9212
博客等级 码龄14年 8粉丝 49原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值