O q sera q esta errado?

Ola pessoal, estou desenvolvendo um algoritmo que le o salario de um funicionario e paga a comicao sobre o total de pecas vendidas pelo vendedor no mes.
Pela lógica eu acho q esta certo, mas quando vou rodar nao consigo o resultado que queria.
Sera q alguem poderia dar uma olhada no codigo e rodar ele pra poder me ajudar.
Ai vai o codigo

import javax.swing.JOptionPane;
import java.text.DecimalFormat;

public class Teste {
  public static void main( String[] args ) {
  
    String nome, sal, mercadoria;
    int pecas;
    double salario, salTotal, recebeu;
    
    nome = JOptionPane.showInputDialog( " Digite o nome do funcionário " );

    sal = JOptionPane.showInputDialog( " Digite o Salário do funcionário " );
    salario = Double.parseDouble( sal );
    
    mercadoria = JOptionPane.showInputDialog( " Digite o total de peças vendidas " );
    pecas = Integer.parseInt( mercadoria );
    
    salTotal = salario;
    
    if ( pecas > 30 ) {
      salTotal =  salario + ( salario * ( 10 / 100 ) );
    }
      
    if ( pecas > 61 ) {
      salTotal =  salario + ( salario * ( 15 / 100 ) );
    }
    
    if ( pecas > 101 ) {
      salTotal =  salario + ( salario * ( 20 / 100 ) );
    }
    
    if(pecas > 150) {
      salTotal =  salario + ( salario * ( 30 / 100 ) );
    }

    recebeu = salTotal - salario;
       
    DecimalFormat aproximador = new DecimalFormat( " 0.00 " );
    
    JOptionPane.showMessageDialog( null,
      " Funcionário >> " + nome + " \n " +
      " Gratificação >> " + recebeu + " \n " +
      " Salário Total >> " + aproximador.format(salTotal), " DADOS DO FUNCIONÁRIO ",
      JOptionPane.INFORMATION_MESSAGE );

    System.exit( 0 );
    
  }
}

Espero q possam me ajudar

Abracao e te +

Mais eu so posso usar o IF e o Else, isso q é o problema.
Se q vc pode me dar uma dica?

Abracao e te +

O interessante em usar if…else if … é que ele não precisa percorrer todas as comparações, por exemplo:

int x = 2;
int y = 0;

if ( x == 1 ) // <- Compara
   y = x;
else if ( x == 2 ) // <-------- Ultima comparação
   y = x; // ATRIBUIU
else if ( x == 3 ) // <- Não compara mais.
   y = x;
else if ( x == 4 ) // <- Não compara mais.
.
.
.

Aqui, vc só precisou de duas comparações.

Se vc não utilizasse if… else if… ficaria assim:

int x = 2;
int y = 0;

if ( x < 1 ) // <- Compara
   y = x; 
if ( x < 2 ) // <- Compara denovo
   y = x; // ATRIBUI
if ( x < 3 ) // <- Compara denovo
   y = x;
if ( x < 4 ) // <- Compara denovo
.
.
.

Perceba que ele comparou 4 vezes.
Utilizando if…else if… (ou switch, dependendo do caso) vc consegue aumentar o desempenho do seu programa.

Bridao pessoal, eu nem tinha pensado nisso.

Abracao e te+

Se o cara tiver vendido 1200 peças, ele vai entrar em todos os if’s sacou???

Então faça:

if&#40;...&#41; &#123;

&#125; else if&#40;...&#41; &#123;

&#125;

Ou então use switch case!

T+

O código que eu postei soh usa if e else não?

E outra coisa, comece do maior para o menor.

if&#40;a &gt; 150&#41; &#123;&#125;
else if&#40;a&gt;100&#41; &#123;&#125;
else ...