Totalmente perdido em arrays

7 respostas
F

Na verdade eu já li várias apostilas, inclusive um da caelum que foi postada aqui no fórum, livro do Deitel e continuo sem entender. Fiz a busca no fórum antes de criar este tópico.

Tenho várias dúvidas e se possível, respondam o que puderem.

1) array é uma maneira genérica de se referir a matrizes e vetores?
2) Por que em java, funções e procedimentos são chamados de método?

class Inverter{
	
	public static void main(String args[]){
	   Scanner s=new Scanner(System.in);
	
	int a [] = new int[6];
	int b [] = new int[6];
	
	for(int i=0;i<a.length;i++){
		a[i]= s.nextInt();
		
		
	}/* 3ª dúvida. Suponho que esse primeiro bloco seja o principal. Ele vai chamar algum método?*/
//Continuação do programa.

inverte(a,b);
	
      for(int i=0;i<b.length;i++){
		System.out.println(b[i]);
		
	} /*4) Esse bloco vai chamar ou ser chamado por quem?*/
//Continuação do programa.

static void inverte(int a[], int b[] ){  
		for(int i=0;i<a.length;i++){
			b[a.length -1 -i] = a[i];
/*5) O que significa b [a.length -1 -i] ? */


				
		}
	
	
	
	}
	
	
}

}

Obrigado.>

7 Respostas

Marck

"1) array é uma maneira genérica de se referir a matrizes e vetores? "

  • Sim. Mais especificamente, vetor = array. Já a matriz é um vetor/array contendo outro vetor/array.
  1. Por que em java, funções e procedimentos são chamados de método?
  • Não tenho certeza mas acredito que é só uma convenção. Não tem significado especial.
  • 3ª dúvida. Suponho que esse primeiro bloco seja o principal. Ele vai chamar algum método?*/
  • Sim. Você está dizendo que o vetor a na posicao i guardara um número que vem do metodo nextInt(); Um metodo sempre tem esse corpo: algumaCoisa();

/4) Esse bloco vai chamar ou ser chamado por quem?/

  • Você está chamando o metodo inverte(a, b);. Dê uma olhada na assinatura do metodo, que é: static void inverte(a[], b[]); Ele diz, que quem quer que o chame, tem que passar dois vetores como argumento. Caso contrário, seu código sequer compilará.

inverte(a,b); // a e b devem ser vetores/arrays
Com isso, ele pára na posicao que está fazendo a chamada, e vai executar o bloco de codigo do metodo invete(a,b) que será o for(…) que depois de executado, retorna para o metodo que o chamou.

*5) O que significa b [a.length -1 -i] ? */
length é uma variavel que guarda o tamanho de um vetor/array. No laço for, você está dizendo que tudo que está dentro de seu corpo será repetido enquando i for menor que o tamanho do array, ou: i < seuVetor.length.

Espero ter ajudado!
Abraço!

davidbuzatto

Minha vez :smiley:

Array é um agrupamento de dados de um certo tipo. Na minha opinião é errado dizer que um array é um vetor, pois um vetor em matemática possui operações (soma de vetores, etc) e um array não. Um array é um array e pronto, é uma estrutura da dados que armazena valores do mesmo tipo. Idem a matrizes. Existe algum método que permite que seja calculado o determinante de um array de arrays (“matriz”)? Não, sendo assim, um array de arrays não é uma matriz. Com os arrays consegue-se representar tais tipos de “entidades” matemáticas, mas isso não implica que um array seja uma delas. Como falei é minha opinião pessoal… Acho feio chamar arrays de vetor ou de matriz, mas de fato é uma forma talvez mais didática de se referir ao mesmo.

Porque Java é orientado a objetos! Método da a idéia de operação, de algo que uma classe faz.

Sim, a execução propriamente dita das classes normalmente estão contidas em métodos.
s.nextInt() chama o método nextInt de Scanner. Mesmo um “println” que você usa é um método.

Vai chamar inverte.

Diz que vc está referenciando a posição a.length (tamanho de a) menos 1 menos i (que é o valor atual do contador do for).

Abraço!

Andre_Brito

Não quero parecer chato nem nada, mas vendo isso me surgiu uma dúvida também.
O lenght não seria um método também? Não entendi porque não tem “()” de parâmetros na frente dele.
Abraço.

Ironlynx

Noop.É um atributo com a quantidade de elementos que cabe nesse array. :wink:
Vc deve estar confundindo com o método length() da classe String.

Andre_Brito

Que interessante, não sabia disso… :roll:

F

[color=red]inverte(a,b);

for(int i=0;i&lt;b.length;i++){
  System.out.println(b[i]);
}

} [/color]

[color=blue]  static void inverte(int a[], int b[] ){

for(int i=0;i<a.length;i++){

b[a.length -1 -i] = a[i];

}
}[/color]

Mas então, o bloco em azul chama o vermelho? Não é meio estranho a parte debaixo chamar a de cima?>

davidbuzatto

Vermelho chama azul

Criado 22 de outubro de 2007
Ultima resposta 23 de out. de 2007
Respostas 7
Participantes 5