Pergunta boba [arrays]

Oi de novo, boa tarde.

Seguinte: há como retornar o valor de um array inteiro?

Exemplo:

protected int a[][] = new int [ 20 ][ 20 ];

public int getA()
{ return a[][]; }

Fazendo algo parecido com isso (porque desta maneira não funciona) ele passaria o valor de todos os dados nele contido?

acho que

public int[][] getA() {
     return a;
}

vai resolver

… burro eu :mrgreen:

valeu!

Mesmo assim não está passando por valor … deixa eu expor a situação melhor:

Tenho uma classe chamada Interf, num dado trecho do código, ela faz isso:

			else
			{
				a[ iX + v ][ iY + h ] = k;// seta qual navio dar print
				
				if( i == navio )
					taStatus.append( "Navio colocado na posição (" + iX + ", " + iY + ")
" );
				
				
				PaintInter p = new PaintInter();
				taArea.setText( p.paintInter( output, a ) );
			} 

Ou seja, eu modifico o array a[][], dando valor específicos para posições específicas.

Ok.

Na minha classe PainInter estou fazendo o seguinte:

	public String paintInter( String o, int[][] b )
	{
		for( int i = 0; i < b.length; i++ )
			for( int j = 0; j < b.length; j++ )
			{
				if( b[ i ][ j ] == 0 ) //nada
					o += "x ";
				else if( b[ i ][ j ] == 1 )
				 o += "? ";
				else if( a[ i ][ j ] == 2 )
				 o += "S ";
				else if( b[ i ][ j ] == 3 )
				 o += "C ";
				else if( a[ i ][ j ] == 4 )
				 o += "D ";
				else if( b[ i ][ j ] == 5 )
				 o += "! ";
				
				if( j == ( b.length - 1 ) && i != ( b.length - 1 ) )
				 o += "
";
					
				//System.out.print( b[ i ][ j ] + " ");
			}
		
		return o;
	}

Como podem ver tem um println comentado ali … ele acusa que todos os elementos do array (mesmo depois de ter chamado o método com o array da class Interf) valem zero.

Pelo jeito eu estou passando os valores desse array por referência … é isso mesmo?

Já testou se ele realmente está atribuindo algum valor no método que deveria fazer isso?
A passagem da array parece estar certa.

Esse negócio de passar por referência ou por valor é meio polêmico… técnicamente, é por valor, mas como array é um objeto acaba tendo o efeito de uma passagem por referência, pois o valor aí seria o endereço na memória.

Sim, já tentei na linha

System.out.print( b[ i ][ j ] + " ");

Ele não altera nada =|

Estou perdido, com frio e com medo … alguém tem alguma sugestão?

O que perguntei é se você testou a array “a”, antes de passar para o método que lê ela como “b”.
Só com esse pedacinho da classe Interf não dá pra saber se ela funciona ou não.

LIPE, tenta usar a clonagem de array com o método System.arrayCopy()… será que não é o que vc tá querendo?

Meu deus! Essa é a luz que eu tava precisando :smiley:

Vou pesquisar sobre isso, valeu cara! :*