Skocz do zawartości

Raster2D, kod Java - opis


karo

Recommended Posts

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

Link do komentarza
Udostępnij na innych stronach

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.

 

Link do komentarza
Udostępnij na innych stronach

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gość
Odpowiedz...

×   Wkleiłeś zawartość bez formatowania.   Usuń formatowanie

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Utwórz nowe...