Ajuda retorno de metodo com valores do vetor

eu posso retornar um metodo para mostrar valores de um vetor?to fazendo isso por que tenho que mostrar em uma gui a ordem dos
numeros utilizando fibonacci só que só consigo mostrar o ultimo numero, então resolvi jogar todos os valores em um vetor pra depois
mostrar ele na tela, só que ta ocorrendo erro no System.out.println(" aaaaaa:" + fibo[i]);//erro aqui e no return fibo[i];
não to conseguindo descubrir o porque ocorre esse erro pois o System.out.println(" Elementos Fibonacci:" + fibo[i]); mostra as informações corretas.
Se alguém poder da uma dica ai ficarei grato…


public int Fibonacci() {
		return this.Fibonacci(this.getValor());
	}

	private int Fibonacci(int numero) {
		int a = 1, i;
		int fibo[] = null;
		fibo = new int[numero];
		for (i = 0; i <= numero;) {

			if (i <= numero) {
				System.out.println(" valor de x:" + numero);
				System.out.println(" valor de i:" + i);
				
				
			
				fibo[i] = i;
				System.out.println(" Elementos Fibonacci:" + fibo[i]);
				i = i + a;
				a = i - a;

			}
			System.out.println(" aaaaaa:" + fibo[i]);//erro aqui
		}
		return fibo[i];
	}

Não sei se entendi muito bem, mas acredito que seja mais fácil você guardar os valores numa classe como Vector, ou ArrayList.

[code]private Vector Fibonacci(int numero) {
int a = 1, i;
int fibo[] = null;
fibo = new int[numero];

            //*******
	Vector v = new Vector();

	for (i = 0; i <= numero;) {

		if (i <= numero) {
			System.out.println(" valor de x:" + numero);
			System.out.println(" valor de i:" + i);
			
			//******
			v.add(i);
			fibo[i] = i;
			System.out.println(" Elementos Fibonacci:" + fibo[i]);
			i = i + a;
			a = i - a;

		}
		System.out.println(" aaaaaa:" + fibo[i]);//erro aqui
	}
	return v;
}[/code]

Bem, pelo que estou vendo no seu código, dentro do seu laço for você está mostrando o elemento atual e no retorno do seu método você está retornando somente o último elemento do seu vetor e não o seu vetor por completo (fibo[i] e não apenas fibo).

Fiz um método para gerar a sequência e armazenar em um vetor de inteiro. Este método simplesmente armazena no vetor que é retornado pelo método. Verifique que para mostrar a sequência de fibonacci neste caso, você terá que percorrer o vetor a partir da posição 1 e não da 0.

    public int[] fibonacci(int numTermos) {
        int [] seq = new int[numTermos+1];
        seq[0] = 0;
        seq[1] = 1;
        for(int i=2;i<seq.length;i++) {
            seq[i] = seq[i-1]+seq[i-2];
        }
        return seq;
    }

Espero ter ajudado.

Você pode tanto retornar, quanto passar vetores como parâmetro:

[code]public static int[] geraVetor() {
int x[] = new int[10];
for (int i = 0; i < 10; i++) {
x[i] = i*i+1;
}
return x;
}

public static void imprimeVetor(int[] vetor) {
for (int elem : vetor) {
System.out.println(elem);
}
}

public static void main(String[] args) {
int vetor[] = geraVetor();
imprimeVetor(vetor);
}[/code]

obrigado a todos que ajudaram agora funcionou,só não consegui entender por que não ta funcionando do geito que eu estava tentando fazer se a logica é praticamente a mesma,antes de vocês responderem aqui tinha alterado o codigo ai tinha parado de dar erro porém não mostra corretamente. se eu pedir pra fazer a fibonacci de 12 ele mostra 12 = [0, 1, 2, 3, 0, 5, 0, 0, 8, 0, 0, 0].se dá um System.out.println mostra corretamente 12 = 0,1,1,3,5,8. será que o problema é com o toString?
Usando a classe vector funcionou que e uma beleza.Na api diz que e pra retornar como String os valores do array.Voltam dá pra ver que eles voltam mais voltam em posições diferentes.
Se não é pedir de mais,mais se alguém souber me dizer só por que ele faz isso,serei grato.


gui//
mostrar na tela

case 2:
					str += " = " +java.util.Arrays.toString(atual.Fibonacci()) + "\n";
				
					
					break;


private int[] Fibonacci(int numero) {
		int a = 1, i;
		int fibo[];
		fibo = new int[numero];
		for (i = 0; i <= numero;) {

			int vetor[]= new int[9];
			fibo[i] = i;
			System.out.println(" Elementos Fibonacci:" + fibo[i]);
			i = i + a;
			a = i - a;

		}
		return fibo;
	}

	public int[] Fibonacci() {
		return this.Fibonacci(this.getValor());
	}

No primeiro caso vc declarou a função como int, não int[].

Ou seja, vc disse ao java que iria retornar um único inteiro, não um vetor de inteiros.
Era esse o seu problema.

Só algumas correções na sua função:

  1. Declare as variáveis o mais próximo possível de onde for usa-las (o int, por exemplo, pode ser declarado dentro do for);
  2. Tem um vetor sendo criado dentro do for que não está sendo usado;
  3. Você pode criar o array fibo e inicializa-lo na mesma linha.
  4. Evite mexer no valor de i, se ele estiver sendo usado dentro de um for.
  5. Tente tornar o algoritmo mais próximo da fórmula clássica. Isso torna ele mais claro. É difícil para quem for analisar seu algoritmo perceber se i e a estão sendo calculados da maneira correta.
  6. Depois de pronto, deixe para fazer a impressão (System.out.println) fora da função.

Por exemplo:

public class Teste {
    private static int[] fibonacci(int numero) {
        if (numero == 0)
            return new int[] {0};
        else if (numero == 1)
            return new int[] {0,1};
        
        int fibo[] = new int[numero+1];
        
        fibo[0] = 0;
        fibo[1] = 1;
        
        for (int i = 2; i <= numero; i++) {
            fibo[i] = fibo[i-1] + fibo[i-2];
        }
        
        return fibo;
    }
    
    
    public static void main(String[] args) {
        System.out.println("Elementos de fib de 7:");
        for (int num : fibonacci(7))
            System.out.print(num + " ");
    }
}

Se quiser ler mais sobre fibonacci e ver outros métodos de calcula-lo, veja esse post:
http://www.guj.com.br/posts/list/57712.java#303559