Я пытаюсь создать метод, который суммирует потенциальные элементы и возвращает эту сумму из массива. Вот некоторые примеры входных данных, которые можно ожидать:
arraySum(new int[10]); // 10
arraySum(new int[2][5]); // 10
arraySum(new int[5][5][5]); // 125
Проблема в том, что я никогда не узнаю, с какими измерениями я работаю. До сих пор я обнаружил, что вызов String.valueOf(array)
для массива возвращает строку, содержащую [
символов, хотя в массиве существует много измерений:
String.valueOf(new int[10]); // [I@hash_code
String.valueOf(new int[5][2]); // [[I@hash_code
String.valueOf(new int[5][5][5]); // [[[I@hash_code
Я могу использовать это, чтобы узнатьточное количество измерений, которые существуют для этого массива, выполнив String.valueOf(array).split("\\[").length - 1
. Однако я не уверен, что я могу сделать с этой точки зрения.
public int arraySum(final Object array) {
checkArgument(array.getClass().isArray()); // from com.google.common.base.Preconditions
final int dimensions = String.valueOf(array).split("\\[").length - 1;
int sum = 0;
// somehow loop n-times over here to count up
return sum;
}
Обычно при итерации многомерных массивов у вас будет несколько циклов внутри друг друга, но в моем случае мне потребуетсян-петли, которые я, очевидно, не могу жестко закодировать. Что я могу сделать?