Executando verificação de segurança...
1

Acho que resolvi o problema e não sei como, gostaria de saber sobre o erro em si

Sim, resolveu porque o código que vc colocou não dá o erro indicado.

O que daria o erro é se tivesse algo assim:

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

Pois aí vc teria duas variáveis i sendo definidas (uma antes do for e outra dentro dele). Mas como você faz for (i = 0, quer dizer que você está usando a variável i que foi declarada na linha anterior.

De qualquer forma, eu prefiro remover o primeiro int i e em cada for declarar seu próprio i (ou seja, for (int i = 0 etc). Pois aí você limita o escopo de cada i e fica claro que ele só "existe" ali. Claro que nesse caso específico não faz diferença, mas de forma geral, o ideal é limitar as variáveis ao menor escopo possível, pois isso deixa claro onde ela é usada e em códigos mais complexos, evita colisão de nomes e deixa o código menos confuso.


Se bem que, do segundo loop em diante você só está percorrendo os elementos, e não precisa mais do índice. Então poderia trocar para o enhanced for:

for (Funcionario func : funcionarios) {
    if (func.getSalario() > mediaSalarios) {
        System.out.println(func.getNome());
    }
}

for (Funcionario func : funcionarios) {
    if (func.getSalario() > mediaSalarios) {
        func.setSalario(func.getSalario() * 1.05);
    } else {
        func.setSalario(func.getSalario() * 1.1);
    }
}

System.out.println("\nFuncionários após o reajuste:");
for (Funcionario func : funcionarios) {
    System.out.println(func);
}
Carregando publicação patrocinada...
1