将 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 个的方法只保持第一个数组而不是接下来的两个的主要内容,如果未能解决你的问题,请参考以下文章

scala 元组

伪代码转换为SAS宏代码

VB的所有命令函数呢?非常之感谢!

将 char 数组转换为字节数组并再次返回

当我使用相对范围时,VBA会自动将我的范围转换为绝对值

将数组转换为Stream流的两种方式--- Stream.of(数组名) 与 Arrays.stream(数组名)