java - 接受两个双精度数组作为参数的方法,仅当数组中的所有值都相等时才返回 true(在 .001 阈值内)
问题描述
我不是最好的,但这就是我目前所拥有的。每当我更改 中的任何元素时array1
,即使它高于.001
阈值,它仍然适用。我哪里做错了?
public static boolean equals(double[] arr1, double[] arr2) {
if (arr1.length != arr2.length)
return false;
for (int i = 0; i < arr1.length; ++i) {
if ((arr1[i] - arr2[i]) < .001) {
return true;
}
}
return false;
}
public static void main(String[] args) {
question2 object = new question2();
double[] arr1 = { 95.0, 14.0, 16.5, 11.1 };
double[] arr2 = { 95.0, 12.9, 16.5, 11.1 };
System.out.println(question3.equals(arr1, arr2));
解决方案
如果any
值差小于0.001
错误,则返回 true,因为您应该比较所有这些值
其次,您需要比较Absolute
值以检查阈值,因为在某些情况下,值2nd array
可能大于 1,因此会破坏条件,因此请尝试以下操作:
public static boolean equals(double[] arr1, double[] arr2) {
if (arr1.length != arr2.length)
return false;
for (int i = 0; i < arr1.length; ++i) {
if (Math.abs(arr1[i] - arr2[i]) >= .001) { // <-- Note Absolute difference
return false; //here if any value voilates the rule it should return false
}
}
return true;
}
推荐阅读
- java - 消费者属性 spring cloud 和 kafka binder
- pine-script - Pine 脚本 - 在“show_last”内乘法时出现问题
- java - 带有 aws lambda 处理程序的黄瓜测试配置
- vue.js - 如何在 V-Calendar Vue 中打开 is-range end month
- javascript - 在宽表上使用 bootstrapTable 时出现“页面无响应”警报
- javascript - webflow添加cms交互
- java - 使用 jersey 构建的 Webapp 适用于 Wildfly,而不是 tomee 或 tomcat
- r - 将每 5 行子集为 5 列
- c# - 为什么我不能在浏览器中访问我的 api 控制器?
- alexa - 如何使插槽输出不同的响应