Não consigo declarar a variável i junto com uma matriz dentro do for

Olá,
Gostaria e uma ajuda nesse código, não sei porque não consigo declarar a variável i juntamento com a atribuição de valor a uma matriz no inicio do laço for, só funciona quando declaro o contador i fora do laço.

Desde já agradeço a ajuda, segue o código…

public class Fibonnacci {

public static void main(String[] args) {
	// TODO Auto-generated method stub
	int a[] = new int[15];
	
	
	for(int i=2, a[0]=1, a[1]=1; i<a.length; i++)
	{										
		a[i] = a[i-1] + a[i-2];
	}
	
	for(int j=0; j<a.length; j++) 
	{					
	System.out.print(" "+a[j]);		
	}

}

}

Dúvida: por que pretende fazer a inicialização dos valores dentro do for e não antes do mesmo?

Ao invés disso:

a[0] = a[1] = 1;
for(int i = 2; ...
1 curtida

Opa, obrigado pelo retorno Darlan, trata-se de um exercício do meu curso de programação, e essa é a alternativa que parece estar mais certa. Então para marca-la como correta preciso entender e certificar que funcione como está.

Repare que em nenhuma das respostas possíveis você tem

for(int i = ...

Em todas o índice foi definido fora do for.

1 curtida

É verdade, foi declarada fora do for e atribuído o valor dentro dele.
Não tinha percebido, valeu pela ajuda.
Obrigado!!

Vc já sabe que pra declarar uma variável precisamos colocar seu tipo seguido pelo seu nome:

int a;
int b;

Opcionalmente, podemos declarar e inicializar a variável ao mesmo tempo:

int a = 123;
int b = 456;

Mas há uma forma de encurtar o código acima que é declarando as 2 variáveis na mesma linha:

int a = 123, b = 456;

O que eu quero te mostrar com isso é que quando o compilador vê um tipo seguido por um nome seguido por uma vírgula, ele entende que após esta vírgula virá a declaração de outra variável daquele mesmo tipo.

Diferente de linguagens como C onde os colchetes na declaração de um array vem depois de seu nome…

int c[15];

Em Java, por convenção, colocamos os colchetes após o tipo e antes do nome, embora o “estilo C” de declarar arrays seja suportado.

int[] c;

Sempre prefira seguir as convenções.

Contudo, há uma situação em que a posição dos colchetes não é opcional: Quando vc quer declarar uma varável comum e um array na mesma linha.

int a = 123, b[] = new int[15];

Se vc fizer isso:

int[] a, b;

O compilador vai entender que vc quer criar um array chamado a e um array chamado b.

Escrevi tudo isso só pra te responder que:

Vc não consegue fazer isso porque o compilador pensa que vc está redeclarando o array a.

O trecho abaixo é possível, mas já foge da proposta do exercício:

for (int i = 2, a[] = new int[15]; i < a.length; i++) {
1 curtida

Nossa, muito bom mesmo. Bastante esclarecedor, ou seja se eu fosse declarar outra tipo inteiro após a virgula daria certo.

Essa foi minha primeira postagem no fórum, antes só ficava lendo e procurando as respostas pelo o que já foi postado com receio de ter um dúvida muito simples ou criar algum tópico repetido etc…

Mas vejo que vcs são super gente boa, espero adquirir maturidade o suficiente para no futuro estar retribuindo. Vlw

1 curtida