Opa pessoal, tudo bem? Sou meio leigo em programação atualmente mais to precisando de ajuda um pouco urgente
No exercício que me foi passado tenho que calcular o Salário Líquido de um usuário descontado de IR e Alíquota e INSS programando em um Frame. O trabalho exige que o frame tenha um combobox com 3 cargos: Gerente, Analista e Técnico como mostra o print. De acordo com o cargo selecionado terá de ser adicionado uma gratificação ao salario do usuário. Sendo que eu não consigo de jeito nenhum fazer a soma de alguma opção escolhida do combobox com o salario bruto digitado para sair no campo salario liquido.
Se alguém manja em Java e puder ajudar o amiguinho agradeço!
private void btnCalcularActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
int adicional1 = 800;
int adicional2 = 450;
int adicional3 = 150;
int total, result;
String add1 = String.valueOf(adicional1);
String add2 = String.valueOf(adicional2);
String add3 = String.valueOf(adicional3);
String valor = String.valueOf(txtSalBruto.getText());
result = Integer.parseInt(txtSalBrutoTitulo.getText());
//Condições para somar o valor digitado + a Gratificação
if(cmbboxCargo.getSelectedItem().equals("Gerente")){
txtCargo.setText(add1+valor);
}
if(cmbboxCargo.getSelectedItem().equals("Analista")){
txtSalLiquido.setText(add2+valor);
}
if(cmbboxCargo.getSelectedItem().equals("Técnico")){
txtCargo.setText(add3+valor);
}
valor+=result;
//Setando o valor somando com o resultado
txtSalLiquido.setText(String.valueOf(valor));
Isso aqui acima, supondo que valor recebe “300”, ele mostraria “800300” (que é a “soma” da String kk) 800 que é a String + 300 que é a variável “valor”.
É a mesma coisa que você querer somar A + 1 = A1, certo?
Mas se o A (String) fosse um numero (Int), ai a soma é executada. 1 + 1 = 2
Então se você deixar o add1, o add2 e o add3 como int você irá conseguir somar. Int com String não somará nunca. Apenas mostrará os dois juntos. Int com Int será somado de fato os valores. Tente fazer essas mudanças ai.
E seus campos provavelmente aceitam que o usuário digite letras. Daí quando você for receber por exemplo essa linha aqui:
result = Integer.parseInt(txtSalBrutoTitulo.getText());
Vai mostrar um erro, pois letra não é int. Acrescente esta classe logo após a declaração de variáveis da sua tela (DENTRO DA CLASSE PRINCIPAL AINDA):
class Numeral extends PlainDocument {
@Override
public void insertString(int offs, String str, AttributeSet a) throws BadLocationException {
int tamanho = (this.getLength() + str.length());
if (tamanho <= 7) { // Aqui você define quantos numeros o usuario pode digitar, no caso aqui so pode até 7 caracteres.
super.insertString(offs, str.replaceAll("[aA-zZ]", ""), a);
} else {
super.insertString(offs, str.replaceAll("[aA0-zZ9]", ""), a);
}
}
}
} // Essa chave fecha o programa la de cima "public class SuaTela extends javax.swing.JFrame {"
Então essa classe é uma classe interna mesmo.
Daí você vai la em cima, logo após o initComponents(); e coloca as variáveis que so podem receber números. Exemplo (num programa meu aqui):
public class CadastroContaView extends javax.swing.JFrame {
/**
* Creates new form View
*/
public CadastroContaView() {
initComponents();
txtSalBruto.setDocument(new Numeral()); // Com isso ele não aceitará letras. Ai você coloca aqui também as outras variáveis (dos campos de texto) que não podem aceitar letras.
}
Dessa forma, não ocorrerá este erro de receber letras em variáveis int.