在Java中将数组保存为局部变量

时间:2015-08-08 06:43:22

标签: java arrays methods

所以我需要想办法将数组保存为局部变量,并在方法结束时返回它。我有点困惑,我被告知除了我自己尝试之外还有其他两个选择。我可以将数组存储为变量或使用哈希表。我想将数组保存为局部变量。

下面是我用来尝试将返回值保存为局部变量数组的方法。

private Integer[] longestLength(int col, boolean color, int row) {
    // longest equals length of the longest route
    // count equals number of the longest routes
    // possible equals number of spots, that you can play off of.
    int longest = 0;
    int count = 0;
    int possible = 0;
    //this for loop counts to 4, the patterns of the 4 possible wins
    for (int i = 1; i <= 4; i++) {
        int length = lengthOfColor(col, color, i, row)[0];
        //if a new longest is found, its new value is now set to itself
        if (length > longest) {
            longest = length;
            count = 0;
            possible = lengthOfColor(col, color, i, row)[1];
        }
        //if length is the same as longest, we increase the count, and make possible equal too the larger one
        if (longest != 0 && length == longest) {
            count++;
            possible = Math.max(lengthOfColor(col, color, i, row)[1], possible);
        }
    }
    return new Integer[]{longest, count, possible};
}

5 个答案:

答案 0 :(得分:0)

// int col; boolean color; int row;
Integer[] result;
result = longestLength(col, color, row);

局部变量result将保留longestLength()的返回值。

答案 1 :(得分:0)

就像你刚才说的那样,你的实际代码并没有错。

但是如果你想使用局部变量,你只需要在方法中声明一个新数组,将这些值放在它上面,然后返回它,所以在你的方法中做以下几点。

// declare a local array in your method
Integer[] output = new Integer[3]();

// put the values you need inside your array
output[0] = new Integer(longest);
output[1] = new Integer(count);
output[2] = new Integer(possible;);

// finally return it
return output;

注意:

当您将值添加到此数组时,请记住将值转换为Integer,因为它们的类型为int

答案 2 :(得分:0)

根据您目前所显示的内容,您不需要使用盒装原语Integer。以下是您可以做的两个版本。

Integer[] myIntegerArray = longestLength(col, color, row);

更好的方法是将您的方法更改为private int[] longestLength(int col, boolean color, int row)并将其返回new int[]{longest, count, possible};

int[] myIntArray = longestLength(col, color, row);

两者之间的区别在于Integer与int之间存在轻微的开销。因此,当您不需要整数时,使用int会比Integer快。

答案 3 :(得分:0)

你可以这样做:

private Integer[] longestLength(int col, boolean color, int row) {
    Integer array[]=new Integer[size]; // make an array
    // Do your work
    .............

    return array; // return the array
} 

答案 4 :(得分:0)

它看起来很简单,我理解的是你需要创建一个本地数组,它可以保存代码中显示的方法的值。

您只需要创建一个本地数组(在下面的代码中提到“longestRouteCount”),在您的情况下使用相同的数据类型Integer,然后调用将返回值赋值给本地数组变量的方法。

Integer longestRouteCount [];
longestRouteCount = longestLength(longest, count, possible);

如果您有相同的查询,请分享,否则请详细说明。 如果您认为这个答案对您有帮助,请投票。