karo Napisano Sierpień 8, 2015 Zgłoś Udostępnij Napisano Sierpień 8, 2015 Witam, moje zadanie polega na opisaniu poniższego kodu: public class RasterData2D { private double[][] values_; private double defaultValue_= -9999; private void init(int rows, int columns, double value) { values_ = new double[rows][columns]; for (int r = 0; r < values_.length; r++) { for (int c = 0; c < values_[r].length; c++) { // ??????? values_[r][c] = value; } } } public RasterData2D(int rows, int columns) { this.init(rows,columns, defaultValue_); } public RasterData2D(int rows, int columns, double defaultValue) { this.init(rows,columns, defaultValue); defaultValue_ = defaultValue; } public int columns(){ return values_[values_.length-1].length; } // ?????? public int rows(){ return values_.length; } public double getValue(int row, int column) { return values_[row][column]; } public void setValue(int row, int column, double value) { values_[row][column] = value; } } Moje pytanie brzmi: dlaczego w miejscu, gdzie wstawiłam komentarz // ????? odnosimy się do values_[r].length; i dlaczego następnie przy metodzie columns zwracana jest wartość values_[values_.length-1].length; dlaczego akurat values_.length-1? Proszę o pomoc. Pozdrawiam Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Jin Napisano Sierpień 11, 2015 Zgłoś Udostępnij Napisano Sierpień 11, 2015 1. dlaczego values_[r].length - nie wiem, w tym przypadku użycie columns było by chyba bardziej czytelne : for (int r=0; r < rows; r++) { for (int c=0; c < columns; c++) { ....... } } Jeśli tablice 2 wymiarową wyobrazimy sobie jako tabelkę to każda linijka zawiera określoną ilość kolumn values_[numer linijki].length() = ilość kolumn (UWAGA: numer linijki liczony jest od 0) 2. dlaczego akurat values_.length-1? Bo adresacja tablic liczona jest od 0 a ilość elementów metodą .length() od 1. values_[0][2] - wskazuje na element z pierwszej linijki i trzeciej kolumny. Trzeba pamiętać jeszcze, że deklaracja tablic liczona jest od 1: values_ = new double[10][10] - 10 linijek z 10-cioma kolumnami. Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.