karo Napisano Sierpień 8, 2015 Zgłoś 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
Jin Napisano Sierpień 11, 2015 Zgłoś 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
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.