How can I make my code with fewer lines?

Asked

Viewed 63 times

0

I currently have a large number of lines in my code:

Below is the insertion part of players, these players will have the names searched from the bank and sent by cmb box.

private void Verificar() {
    String jogadores = JOptionPane.showInputDialog(null, "Selecione a quantidade de jogadores.");
    setLayout(new FlowLayout());  //configura o layout de frame

    if (null != jogadores) {

        if ("1".equals(jogadores)
            || "2".equals(jogadores) || "3".equals(jogadores) 
            || "4".equals(jogadores) || "5".equals(jogadores) 
            || "6".equals(jogadores) || "7".equals(jogadores) 
            || "8".equals(jogadores) || "9".equals(jogadores) 
            || "10".equals(jogadores) || "11".equals(jogadores) 
            || "12".equals(jogadores) || "13".equals(jogadores) 
            || "14".equals(jogadores) || "15".equals(jogadores) 
            || "16".equals(jogadores) || "17".equals(jogadores) 
            || "18".equals(jogadores) || "19".equals(jogadores) 
            || "20".equals(jogadores) || "21".equals(jogadores) 
            || "22".equals(jogadores) || "23".equals(jogadores) 
            || "24".equals(jogadores) || "25".equals(jogadores) 
            || "26".equals(jogadores) || "27".equals(jogadores) 
            || "28".equals(jogadores) || "29".equals(jogadores) 
            || "30".equals(jogadores) || "31".equals(jogadores) 
            || "32".equals(jogadores) || "33".equals(jogadores) 
            || "34".equals(jogadores) || "35".equals(jogadores) 
            || "36".equals(jogadores) || "37".equals(jogadores) 
            || "38".equals(jogadores) || "39".equals(jogadores) 
            || "40".equals(jogadores)) {

            switch (jogadores) {
                case "1":
                    setSize(460, 65);
                    setTitle("Selecione os jogadores");
                    J1();
                    break;
            } // fim switch

        } // fim if gigante
    } // fim if not null

} // fim método verificar

private void J1() {
    JLabel jog1 = new JLabel("Nome do jogador: ");
    add(jog1);
    jog1.setVerticalTextPosition(SwingConstants.BOTTOM);
    JComboBox cbj1 = new JComboBox();
    add(cbj1);
    cbj1.setModel(new javax.swing.DefaultComboBoxModel(new String[] {"    "}));
    JLabel jog2 = new JLabel("Número da cartela: ");
    add(jog2);
    jog2.setVerticalTextPosition(SwingConstants.BOTTOM);
    JComboBox cbj2 = new JComboBox();
    add(cbj2);
    cbj2.setModel(new javax.swing.DefaultComboBoxModel(new String[] {"    "}));

} // fim J1

In bold at the beginning of the code I put the 40 "case" that I am using, for each CASE there is a Jx being x the number of players that the user inform.

No private void J1() I used as an example because the code would be HUGE You’re making it difficult for me to maintain my code.

I wonder if there is a way to concatenate the prefix J with the number of players that the user inform me to play it on the screen so that the user fill in the combo box the name of the players of the match, remembering that there are several cases currently, I thought of creating just a function that makes this control, without messing up my interface.

1 answer

2


that part here :

 String jogadores = JOptionPane.showInputDialog(null, "Selecione a quantidade de jogadores.");
setLayout(new FlowLayout());  //configura o layout de frame

if (null != jogadores) {

    if ("1".equals(jogadores)
        || "2".equals(jogadores) || "3".equals(jogadores) 
        || "4".equals(jogadores) || "5".equals(jogadores) 
        || "6".equals(jogadores) || "7".equals(jogadores) 
        || "8".equals(jogadores) || "9".equals(jogadores) 
        || "10".equals(jogadores) || "11".equals(jogadores) 
        || "12".equals(jogadores) || "13".equals(jogadores) 
        || "14".equals(jogadores) || "15".equals(jogadores) 
        || "16".equals(jogadores) || "17".equals(jogadores) 
        || "18".equals(jogadores) || "19".equals(jogadores) 
        || "20".equals(jogadores) || "21".equals(jogadores) 
        || "22".equals(jogadores) || "23".equals(jogadores) 
        || "24".equals(jogadores) || "25".equals(jogadores) 
        || "26".equals(jogadores) || "27".equals(jogadores) 
        || "28".equals(jogadores) || "29".equals(jogadores) 
        || "30".equals(jogadores) || "31".equals(jogadores) 
        || "32".equals(jogadores) || "33".equals(jogadores) 
        || "34".equals(jogadores) || "35".equals(jogadores) 
        || "36".equals(jogadores) || "37".equals(jogadores) 
        || "38".equals(jogadores) || "39".equals(jogadores) 
        || "40".equals(jogadores)) ...

Voce can trade for this here :

String strJogadores = JOptionPane.showInputDialog(null, "Selecione a quantidade de jogador

int intJogadores = 0;
// confere se foi digitado um numero valido 
try{ intJogadores = Integer.parseInt(strJogadores);}
catch(NumberFormatException e){// sua msg de erro aqui caso entro um invalido numero}

if(intJogadores > 0 && intJogadores < 41)
{
    switch(intJogadores)
    {
        case 1:
          ......
          ........
        break;
    }
}

I think we can eliminate this switch there , from what I understand I think you can use a loop to do the work instead of using 41 cases inside the switch ,then in case you would use the intJogadores as length of loop , to help you more about it would have to have more information about your code.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.