你如何返回一个取消引用的数组?

Posted

技术标签:

【中文标题】你如何返回一个取消引用的数组?【英文标题】:How do you return a dereferenced array? 【发布时间】:2012-10-04 04:56:11 【问题描述】:

我希望执行以下操作:

public static int[] plusOneLengthFour(int[] arr) 
  return arr[0]+1,arr[1]+1,arr[2]+1,arr[3]+1;

但在编译时,我收到以下错误:

TestClass.java:5: error: illegal start of expression
        return arr[0]+1,arr[1]+1,arr[2]+1,arr[3]+1;

这里有什么问题?

【问题讨论】:

你想返回你的数组,它的元素增加 1 吗? 【参考方案1】:

您只需在您的 return 语句中添加 new int[] 即可编译它。如果你只是从花括号开始,它不知道你想要什么。请注意,这将返回一个 new 数组,而原始 arr 将具有相同的值。

即,

return new int[] arr[0]+1,arr[1]+1,arr[2]+1,arr[3]+1;

【讨论】:

哦,我不知道!非常感谢您的早期和简单的回复!【参考方案2】:

如果要修改输入数组,则不需要返回任何内容:

public static void plusOneLengthFour(int[] arr) 
    arr[0]++;
    arr[1]++;
    arr[2]++;
    arr[3]++;

如果要创建一个新数组,包含输入数组的前 4 个元素递增 1,那么要使用的代码是

public static int[] plusOneLengthFour(int[] arr) 
    return new int[] arr[0] + 1, arr[1] + 1, arr[2] + 1, arr[3] + 1;

【讨论】:

这行得通!谢谢!我让 Jeff 的答案正确,因为他是第一个!【参考方案3】:

你应该使用下面的语句来返回数组。

  return new int[] arr[0] + 1, arr[1] + 1, arr[2] + 1, arr[3] + 1;

【讨论】:

这行得通!谢谢!我让 Jeff 的答案正确,因为他是第一个!【参考方案4】:

我猜你需要返回你的数组,数组元素递增 1。你可以这样做:-

public static void plusOneLengthFour(int[] arr) 
    for (int i = 0; i < arr.length; i++) 
        arr[i] = arr[i] + 1;
    


其实你不需要返回数组。更改将反映在原始数组中。

【讨论】:

这只是我当场想到的一个示例程序。我试图做的是返回一个数组而不提前为其创建引用。感谢您的回答!【参考方案5】:

你可以让你的方法更灵活

public static int[] addNumberToItems(int[] array, int valueToAdd) 
    for (int i = 0; i < array.length; i++)
        array[i] += valueToAdd;

    return array;

这个常量返回数组的长度:

array.length

【讨论】:

这只是我当场想到的一个示例程序。我试图做的是返回一个数组而不提前为其创建引用。感谢您的回答!

以上是关于你如何返回一个取消引用的数组?的主要内容,如果未能解决你的问题,请参考以下文章

取消引用数组指针

通过取消引用更改 NSArray 中的值?

如何取消引用这个 2D 动态数组?

取消引用(发布?)NSMutableArray

用于取消引用函数结果的 PHP 语法

从PHP版本7.2.0开始,“数组解除引用”如何处理类型为boolean / integer / float / string的标量值?