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);
}