Olá, boa tarde, estou com problema no seguinte código:
public static void main(String[] args) {
NumberFormat nf = NumberFormat.getCurrencyInstance();
int numero = 0;
while (numero <= 0) {
String str = "Informe o números de funcionarios";
str = JOptionPane.showInputDialog(null, str);
if (str == null) {
System.exit(0);
}
numero = Integer.parseInt(str);
}
String str = "";
String funcionarios[] = new String[numero];
for (int i = 1; i <= numero; i++) {
while (true) {
str = "Imforme o nome do funcionário número: " + i;
str = JOptionPane.showInputDialog(null, str);
if (str == null) {
if (str == null) break;
}
if (str.length() >= 3 && str.length() <= 50) {
str = str.trim();
funcionarios[i - 1] = str;
break;
}
}if (str == null) break;
}
double dadosFuncionarios[][] = new double[numero][4];
for (int l = 0; l < dadosFuncionarios.length; l++) {
while (true) {
str = "Informe o salario bruto do funcionario " + funcionarios[l];
str = JOptionPane.showInputDialog(null, str);
if (str == null) {
System.exit(0);
}
double salarioBruto = Double.parseDouble(str);
if (salarioBruto < 465) {
JOptionPane.showMessageDialog(null, "Salario inválido");
} else {
dadosFuncionarios[l][0] = salarioBruto;
break;
}
break;
}
while (true) {
if (dadosFuncionarios[l][0] <= 965.67) {
dadosFuncionarios[l][1] = (dadosFuncionarios[l][0] / 100) * 8;
break;
}
if (dadosFuncionarios[l][0] >= 965.68 && dadosFuncionarios[l][0] <= 1609.45) {
dadosFuncionarios[l][1] = (dadosFuncionarios[l][0] / 100) * 9;
break;
}
if (dadosFuncionarios[l][0] >= 1609.46 && dadosFuncionarios[l][0] <= 3218.90) {
dadosFuncionarios[l][1] = (dadosFuncionarios[l][0] / 100) * 11;
break;
}
if (dadosFuncionarios[1][0] >= 3218.91) {
dadosFuncionarios[l][1] = 354.47;
break;
}
break;
}
while (true) {
if (dadosFuncionarios[l][0] < 1434) {
dadosFuncionarios[l][2] = (dadosFuncionarios[l][0] / 100) * 0;
break;
}
if (dadosFuncionarios[l][0] >= 1434.01 && dadosFuncionarios[l][0] <= 2150) {
dadosFuncionarios[l][2] = (dadosFuncionarios[l][0] / 100) * 7.5;
break;
}
if (dadosFuncionarios[l][0] >= 2150.01 && dadosFuncionarios[l][0] <= 2886) {
dadosFuncionarios[l][2] = (dadosFuncionarios[l][0] / 100) * 15;
break;
}
if (dadosFuncionarios[l][0] >= 2886.01 && dadosFuncionarios[l][0] < 3582) {
dadosFuncionarios[l][2] = (dadosFuncionarios[l][0] / 100) * 22.5;
break;
}
if (dadosFuncionarios[l][0] >= 3582.01) {
dadosFuncionarios[l][2] = (dadosFuncionarios[l][0] / 100) * 27.5;
break;
}
break;
}
while (true) {
dadosFuncionarios[l][3] = (dadosFuncionarios[l][1] + dadosFuncionarios[l][2]) - dadosFuncionarios[l][0];
break;
}
}
double salarioBrutoTotal = 0;
double inssTotal = 0;
double impostoDeRendaTotal = 0;
double salarioLiquidoTotal = 0;
str = "Resultado da folha de pagamento.\n\n\n";
for (int l = 0; l < dadosFuncionarios.length; l++) {
salarioBrutoTotal += dadosFuncionarios[l][0];
inssTotal += dadosFuncionarios[l][1];
impostoDeRendaTotal += dadosFuncionarios[l][2];
salarioLiquidoTotal += dadosFuncionarios[l][3];
str += funcionarios[l] + " - " + nf.format(dadosFuncionarios[l][0]) + " - " + nf.format(dadosFuncionarios[l][1]) + " - "
+ nf.format(dadosFuncionarios[l][2]) + " - " + nf.format(dadosFuncionarios[l][3]) + "\n";
}
JOptionPane.showMessageDialog(null, str + "\n\n\nTotai: " + nf.format(salarioBrutoTotal) + " - " + nf.format(inssTotal) + " - " + nf.format(impostoDeRendaTotal) + " - " + nf.format(salarioLiquidoTotal));
}
}
1º problema se eu digito que quero registar só 1 funcionário ele me retorna um erro
2º problema se eu registro o primeiro salario com 4.000 ele n calcula a faixa salarial do inss fica como 0,00, porem se o salario do segundo funcionario for 4.000 ele calcula sem problemas, alguém saberia me ajudar? desde ja mt obg!