Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

Chamada da Função

Ele compila mas da erro na linha 21 e na linha 34, respectivamente a chamada e a atribuição dentro da mesma, alguem pode me ajudar?

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner entrada = new Scanner(System.in);

        System.out.println("Insira o numero de casos");
        int caso;
        caso = entrada.nextInt();

        int resultado;
        if(caso == 0) {
            resultado = 0;
            System.out.println("Fib("+ caso + ") onde " + resultado + " é o primeiro termo da série de Fibonacci.");

        }else if(caso == 1) {
            resultado = 1;
            System.out.println("Fib("+ caso + ") onde " + resultado + " é o segundo termo da série de Fibonacci.");

        }else {
            Fib(caso);
        }

    }
public static void Fib(int caso) {
int aux, resultado = 0;

int[] fib = new int[caso];

fib[0] = 0;
fib[1] = 1;

        for(int i = 2; i <= caso; i++) {
            fib[i] = fib[i-1] + fib[i-2];
            resultado = fib[i];
        }
        System.out.println("Fib("+ caso + ")"
                 + " onde " + resultado + " é o " +(caso+1) + "-enésimo termo da série de Fibonacci.");

    }
}
5 respostas

Boa noite, Pedro! Como vai?

Qual é o erro que ocorre? Vc poderia colar o log completo aqui para que eu possa dar uma olhada e tentar te ajudar?

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 4 out of bounds for length 4 at Main.Fib(Main.java:34) at Main.main(Main.java:21)

Quando "caso >= 2 " ele da esse erro

solução

Oi Pedro, tudo bem?

Pelo que vi o problema está no seu for.

Se caso = 4, a linha fib[i] = fib[i-1] + fib[i-2]; na última iteração você tentará acessar fib[4], que não existe...

Sacou?

saquei, obrigado

Olá Pedro, como seu problema foi resolvido, estou fechando o tópico ok?