Как вы проходите измерения массива? - PullRequest
2 голосов
/ 05 февраля 2012

Как вы передаете измерения Массива вместе с Массивом в Java?Я предлагаю что-то вроде этого:

public String[1][1] abc(){
return theStringArray
}    
//but this isn't possible

Итак, есть ли способ передать измерения массивов?

Сейчас у меня есть 2 метода, которые передают int для каждого измерения, но есть ли лучшийспособ сделать это?

Проблема в его сердце заключается в следующем:

Когда я пытаюсь передать массив и найти его длину, он дает мне массу ошибок.Проблема состоит в том, что массив для класса, получающего массив, должен инициализировать массив, в который будет скопирован переданный массив, но без измерений переданных массивов, как я могу его инициализировать?

Класс, в который передается массив:

String[][] lordStats;
ArrayList<String> troopList;

public void loader() {
    lord lorder = new lord();
    lordStats = lorder.returnLord();
    total = lorder.returnLordTotal();
for (int i = 0; i < lordStats[0].length; i++)
    troopList.add (lordStats[i][2]);

}

Класс, из которого получен массив: обратите внимание, что метод создатель лорда называется кратным временем.

public class lord {
static int total;
String[][] lordStats;

public void total(int total1) {
    total = total1;
    System.out.println("lordTotal");

}

public void lordCreator(String lord, String kingdom, String troop, int times) {

    lordStats = new String[total][3];
    System.out.println("animalStats");

    lordStats[times][0] = lord;
    lordStats[times][1] = kingdom;
    lordStats[times][2] = troop;


}

public String[][] returnLord() {
    return lordStats;
}

Ответы [ 4 ]

5 голосов
/ 05 февраля 2012

В Java обычно не нужно передавать измерения массива вместе с массивом, поскольку каждый массив неявно знает свои собственные измерения.

Если массив называется arr, то arr.length будетвернуть его размер.Если arr является двумерным массивом, то arr[0].length даст размер первой строки;arr[1].length - это размер следующей строки и т. Д.

Если функция выделяет массив указанного пользователем размера, просто передайте нужные измерения в функцию какint аргументы.

1 голос
/ 05 февраля 2012

Все массивы в Java являются одномерными.Вы можете иметь массив массивов, который фактически является двумерным массивом.Однако каждый элемент может иметь разную длину, и нет никакого способа применить один второй размер измерения.Вы можете сделать что-то вроде этого:

public String[][] makeArray(int rows, int columns) {
    return new String[rows][columns];
}

Затем вы можете запросить массив следующим образом:

String[][] array = makeArray(1, 1);
System.out.println("Row count: " + array.length);
System.out.println("Column count: " + array[0].length); // assumes >0 elements

Однако кто-то может сделать это:

String[][] array = makeArray(3, 3);
array[0] = new String[1];

Тогда предыдущий код даст неверный результат для количества столбцов.

1 голос
/ 05 февраля 2012

Вы можете определить длину массива всего с .length. Но Java-массивы - это просто массивы (не N-мерные блоки смежных элементов).

Таким образом, они могут быть зубчатыми, то есть каждая строка имеет разное количество столбцов. Таким образом, вы можете полагаться только на длину theStringArray[0] (количество столбцов для первой строки), равную theStringArray[1], если есть документированное понимание того, что theStringArray не является зубчатым.

1 голос
/ 05 февраля 2012

Вам не нужно явно передавать измерения массива в Java, для массивов есть свойства длины.

public String[][] abc() {
    return new String[10][10];
}
...