2009-11-09 11 views

Odpowiedz

16

Po pierwsze, technicznie Java nie ma tablic dwuwymiarowych: ma tablice tablic. Więc w Javie można to zrobić:

String arr[][] = new String[] { 
    new String[3], 
    new String[4], 
    new String[5] 
}; 

Punktem chcę przedostać się to powyżej nie jest prostokątny (jak prawdziwa tablica 2D będzie).

Więc, tablica tablic, czy to według kolumn, a następnie wierszy lub wierszy, a następnie kolumn? Jeśli jest to wiersz, a następnie kolumny, wówczas jest to łatwe:

int rows = arr.length; 

(z powyższego przykładu).

Jeśli Twoja tablica to kolumny, a następnie wiersze, oznacza to, że masz problem. Można to zrobić:

int rows = arr[0].length; 

ale może to nie dla kilku powodów:

  1. Tablica musi mieć rozmiar 0, w którym to przypadku dostaniesz wyjątek; i
  2. Przyjmuje się, że długość pierwszego elementu tablicy jest liczbą wierszy. To niekoniecznie jest poprawne, jak pokazuje powyższy przykład.

Tablice są prostym narzędziem. Jeśli chcesz prawdziwy obiekt 2D, zdecydowanie sugeruję, abyś znalazł lub napisał klasę, która zachowuje się we właściwy sposób.

8
Object[][] data = ... 
System.out.println(data.length); // number of rows 
System.out.println(data[0].length); // number of columns in first row 
+0

wpisać szybciej niż ja :) – Xailor

+0

że nie powinno po prostu być // liczba kolumn ? –

5
int[][] ia = new int[5][6]; 
System.out.println(ia.length); 
System.out.println(ia[0].length); 
1

To zależy co masz na myśli przez "ile wierszy".

Po pierwsze, dwuwymiarowa tablica jest w rzeczywistości macierzą 1-D tablic 1-D w Javie. I nie ma wymogu, aby tablica 2D była w rzeczywistości prostokątna, lub nawet, że wszystkie elementy w pierwszym wymiarze zostały wypełnione.

  • Jeśli chcesz znaleźć liczbę elementów w pierwszym wymiarze, odpowiedź jest po prostu array.length.

  • Jeśli chcesz znaleźć liczbę elementów w drugim wymiarze prostokątnej tablicy 2-D, odpowiedzią jest `array [0] .length.

  • Jeśli chcesz znaleźć liczbę elementów w drugim wymiarze niedokładnej lub rzadkiej tablicy 2-D, odpowiedź jest niezdefiniowana.

Powiązane problemy