Skocz do zawartości

Raster2D, kod Java - opis


Recommended Posts

Napisano

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

Napisano

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.

 

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...