问题描述
因此,我需要找出一种将数组保存为局部变量并在方法末尾将其返回的方法。 我有些困惑,有人告诉我除了我自己尝试过的方法以外,还有其他两种选择。 我可以将数组存储为变量或使用哈希表。 我想将数组另存为局部变量。
下面是我用来尝试将返回值另存为局部变量数组的方法。
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};
}
1楼
// int col; boolean color; int row;
Integer[] result;
result = longestLength(col, color, row);
局部变量result
将保留longestLength()
的返回值。
2楼
就像您刚才说的那样,您的实际代码没有错。
但是,如果要使用局部变量,则只需要在方法内部声明一个新数组,将这些值放在其上,然后将其返回,因此在您的方法内部执行以下操作。
// 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
为Integer
,因为它们的类型为int
。
3楼
根据到目前为止的显示,您无需使用盒装的原始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 vs int的开销很小。 因此,当您不需要整数时,使用int会比Integer更快。
4楼
您可以这样:
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
}
5楼
看起来很简单,我理解的是,您需要创建一个本地数组,该数组可以保存代码中显示的方法中的值。
您只需要在案例Integer中创建具有相同数据类型的本地数组(如下面的代码中提到的“ longestRouteCount”),然后调用将返回值分配给本地数组变量的方法。
Integer longestRouteCount [];
longestRouteCount = longestLength(longest, count, possible);
如果您有相同的查询,请分享,否则请详细说明。 如果您认为此答案对您有所帮助,请投票。