将 3 个不同数组的所有值转换为它们的绝对值并返回所有 3 个的方法只保持第一个数组而不是接下来的两个
Posted
技术标签:
【中文标题】将 3 个不同数组的所有值转换为它们的绝对值并返回所有 3 个的方法只保持第一个数组而不是接下来的两个【英文标题】:Method to turn all values of 3 different arrays into their absolute values and return all 3 keeps only turning the first array but not the next two 【发布时间】:2019-01-23 00:16:23 【问题描述】:我为一个基本上给我三个不同数组的类分配了这个任务,主方法调用我的方法调用 makeThemAllPostive,它接受一个数组并以绝对值形式打印出所有值。但是,我的方法只返回第一个调用的数组,而忽略接下来调用我的方法的两个数组。
我不知道还能尝试什么,我已经尝试调整我的 for 循环,以便我可以尝试以不同的方式计算绝对值,或者添加更多 for 循环来尝试执行每个数组,但没有任何效果.
这里是调用我的方法的主要方法部分
System.out.println("\nmakeThemAllPostive test:");
makeThemAllPostive(array1);
String actual = Arrays.toString(array1);
System.out.println(actual.equals("[2, 42, 1]") ? "Passed!"
: "Expected [2, 42, 1] but you returned " + actual);
makeThemAllPostive(array2);
actual = Arrays.toString(array2);
System.out.println(actual.equals("[4, 1, 3, 0, 8, 4, 2]") ? "Passed!"
: "Expected [4, 1, 3, 0, 8, 4, 2] but you returned " + actual);
makeThemAllPostive(array3);
actual = Arrays.toString(array3);
System.out.println(
actual.equals("[8, 42, 1, 42, 1, 1, 2, 42, 5, 0, 2, 42]") ? "Passed!"
: "Expected [8, 42, 1, 42, 1, 1, 2, 42, 5, 0, 2, 42] but you returned "
+ actual);
这是我的方法
public static void makeThemAllPostive(int[] arr)
int i = 0;
for (i = 0; i < arr.length; i++)
Math.abs(arr[i]);
这是我的输出:
makeThemAllPostive 测试: 通过! 预期 [4, 1, 3, 0, 8, 4, 2] 但您返回 [4, -1, -3, 0, 8, -4, 2] 预期 [8, 42, 1, 42, 1, 1, 2, 42, 5, 0, 2, 42] 但您返回 [-8, 42, 1, 42, -1, 1, -2, 42, - 5、0、2、42]
我的预期输出应该是所有 3 个测试都通过了,但只有第一个通过了 :(
【问题讨论】:
【参考方案1】:您的代码中明显的错误是您执行了Math.abs
,但您没有在任何地方分配该值,因此唯一的效果就是加热宇宙。试试这样的:
for (int i = 0; i < arr.length; i++)
arr[i] = Math.abs(arr[i]); // assign abs back!
【讨论】:
以上是关于将 3 个不同数组的所有值转换为它们的绝对值并返回所有 3 个的方法只保持第一个数组而不是接下来的两个的主要内容,如果未能解决你的问题,请参考以下文章