When I run my program this error appears and I don’t know what is wrong

Asked

Viewed 35 times

-3

public class ClasseExecutoraFuncionarios {

    public static void main(String[] args) {

        List<Funcionario> funcionarios = new ArrayList<>();
        Scanner entrada = new Scanner(System.in);
        Scanner entradaString = new Scanner(System.in);
        int elemento;
        int contFuncionarios = 0, contHomens = 0, contMulheres = 0, conIndefinido = 0;
        float acumSalario = 0;
        String pergunta = "S";
        float salario;

        while (pergunta.equalsIgnoreCase("S")) {

            contFuncionarios++;

            Funcionario funcionario = new Funcionario();

            System.out.println("Informe seu ID: ");
            funcionario.setId(entrada.nextInt());

            System.out.println("Nome: ");
            funcionario.setNome(entradaString.nextLine());

            System.out.println("Cidade: ");
            funcionario.setCidade(entradaString.nextLine());

            System.out.println("Telefone: ");
            funcionario.setTelefone(entradaString.nextLine());

            System.out.println("Email: ");
            funcionario.setEmail(entradaString.nextLine());

            System.out.println("Informe Sexo{F/M]: ");
            funcionario.setSexo(entradaString.nextLine());

            System.out.println("Número de horas trabalhadas: ");
            funcionario.setHorasTrabalhadas(entrada.nextFloat());

            System.out.println("valor de horas trabalhadas: ");
            funcionario.setValorhora(entrada.nextFloat());

            acumSalario = acumSalario + (funcionario.getHorasTrabalhadas() * funcionario.getValorhora());

            if (funcionario.getSexo().equalsIgnoreCase("F")) {
                contMulheres++;
            } else if (funcionario.getSexo().equalsIgnoreCase("M")) {
                contHomens++;
            } else {
                conIndefinido++;
            }

            //a seguir adiciono o funcionario instanciado na lista de Funcionarios.
            funcionarios.add(funcionario);

            System.out.println("Deseja Cadastrar um Novo Funcionario[S/N]");
            pergunta = entradaString.nextLine();
            System.out.println();
            System.out.println("------------------------------------");

        }

        System.out.println();
        System.out.println("------------------------------------");
        System.out.println("Saida de Dados");
        System.out.println();

        //Formatando aas saidas de dados
        //Numero de fucionarios
        System.out.println("Numero de funcionarios cadastrados:  " + contFuncionarios);
        //alternativa para a rimira saida
        // System.out.println("Numero de funcionarios cadastrados="+funcionarios.size());

        System.out.println("Numero de Homens: " + contHomens);
        System.out.println("Numero de Mulheres: " + contMulheres);
        System.out.println("Numero de Funcionarios que informou sexo invalido: " + conIndefinido);

        System.out.println("Valor total gasto com Salario: " + acumSalario);

        for (elemento = 1; elemento <= funcionarios.size(); elemento++) {
            if (funcionarios.get(elemento).getSexo().equalsIgnoreCase("F")) {
                //como nao existe o atributo salario no objeto funcionario
                //tive que calcular o valor a ser testado   
                salario = funcionarios.get(elemento).getValorhora() * funcionarios.get(elemento).getHorasTrabalhadas();

                if (salario > 1800) {
                    System.out.println(funcionarios.get(elemento).getNome());
                    System.out.println(funcionarios.get(elemento).toString());
                }
            }
        }
    }
}

inserir a descrição da imagem aqui

1 answer

0


The error is saying that you are trying to access an element at a position of the array that does not exist. In this case, your size 2 array has the index 0 and 1, but you’re trying to access the position 2. How arrays enumeration starts with 0, your loop for it should be like this

for (elemento = 0; elemento < funcionarios.size(); elemento++)
  • keeps making the same mistake

  • You switched the sign of '<=' by one of '<' ?

  • Thank you worked

Browser other questions tagged

You are not signed in. Login or sign up in order to post.