I’m not able to take the Edittext value of the aux variable and compare in the if

Asked

Viewed 85 times

-1

When you type 0 or 1 of Edittext is to enter IF and does not enter.

private TextView nome1;
    private TextView nome2;
    private EditText vitoria;
    private Button salvar;
    private TextView primeiroLugar;
    private TextView segundoLugar;
    private TextView terceiroLugar;

    int tamanho;
    Integer maiorValor = 0;
    int soma = 1;
    int k = 0;
    int j = 1;
    int m = 0;
    int n = 2;


    //CONTAGEM DOS PONTOS DE CADA JOGADOR
    //int cont = nomesAuxiliares.size();
    ArrayList<Integer> contador = new ArrayList<>();


    ArrayList<String> nomesAuxiliares = new ArrayList<>();

    public void compararNomes(int k, int j) {

        String aux1 = vitoria.getText().toString();
        //int num = Integer.parseInt(aux1);
        if(k != j || j > k) {

            if(k < nomesAuxiliares.size()) {

                if(j < nomesAuxiliares.size()) {

                    nome1.setText(nomesAuxiliares.get(k));
                    nome2.setText(nomesAuxiliares.get(j));


                    if(aux1.equals("0")) {

                        int cont = contador.get(k) + 1;
                        contador.remove(k);
                        contador.add(k, cont);
                        primeiroLugar.setText(String.valueOf(contador.get(k)));

                    }

                    else if(aux1.equals("1")) {

                        int cont2 = contador.get(j) + 1;
                        contador.remove(j);
                        contador.add(j, cont2);
                        primeiroLugar.setText(String.valueOf(contador.get(j)));

                    }


                }

            }

        }
        while(k == j || j < k) {

            j++;
            if(k != j || j > k) {

                if(k < nomesAuxiliares.size()) {

                    if(j < nomesAuxiliares.size()) {

                        nome1.setText(nomesAuxiliares.get(k));
                        nome2.setText(nomesAuxiliares.get(j));

                        if(aux1.equals("0")) {

                            int cont = contador.get(k) + 1;
                            contador.remove(k);
                            contador.add(k, cont);
                            primeiroLugar.setText(String.valueOf(contador.get(k)));

                        }
                        else if(aux1.equals("1")) {

                            int cont2 = contador.get(j) + 1;
                            contador.remove(j);
                            contador.add(j, cont2);
                            primeiroLugar.setText(String.valueOf(contador.get(j)));

                        }
                    }
                }
            }
        }
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_terceira_tela);

        //listaAuxiliar = findViewById(R.id.IdListaAuxiliar);
        nome1 = findViewById(R.id.IdNome1);
        nome2 = findViewById(R.id.IdNome2);
        vitoria = findViewById(R.id.IdVitoria);
        salvar = findViewById(R.id.IdSalvar);
        primeiroLugar = findViewById(R.id.IdPrimeiro);
        segundoLugar = findViewById(R.id.IdSegundo);
        terceiroLugar = findViewById(R.id.IdTerceiro);


        Bundle extras = getIntent().getExtras();
        if(extras != null) {

            nomesAuxiliares = extras.getStringArrayList("jogadores");

            ArrayAdapter<String> adaptador2 = new ArrayAdapter<>(
                    getApplicationContext(),
                    android.R.layout.simple_list_item_1,
                    android.R.id.text1,
                    nomesAuxiliares
            );

            //listaAuxiliar.setAdapter(adaptador2);

        }


            for(int s = 0; s < nomesAuxiliares.size(); s++) {

                contador.add(s, 0);

            }

                if(j > k) {

                    nome1.setText(nomesAuxiliares.get(k));
                    nome2.setText(nomesAuxiliares.get(j));

                    String aux = vitoria.getText().toString();
                    int num = Integer.parseInt(aux);


                    if(num == 0) {

                        int cont = contador.get(k) + 1;
                        contador.remove(k);
                        contador.add(k, cont);
                        primeiroLugar.setText(String.valueOf(contador.get(k)));

                    }

                   else if(num == 1) {

                        int cont2 = contador.get(j) + 1;
                        contador.remove(j);
                        contador.add(j, cont2);
                        primeiroLugar.setText(String.valueOf(contador.get(j)));

                    }





                }
                else if(j <= k) {



                }


                k = 0;
                j = 2;
                //k = 0;
                //j = 1;
                //compararNomes(k, j);

        //TODOS CONTRA TODOS: logica como vai funcionar o jogo (vai aparecer na terceira tela)
        salvar.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                vitoria.setText("");

                if(k == (nomesAuxiliares.size() - 1)) {

                    /*for(int m = 0; m < contador.size(); m++) {

                        if(contador.get(m) == null) {

                            //contador.add(m, 0);

                        }

                    }*/

                    for(Integer valor: contador) {

                        if(valor > maiorValor) {

                            maiorValor = valor;

                        }

                    }



                    //primeiroLugar.setText(String.valueOf(maiorValor));


                }

                compararNomes(k, j);

                j++;
                if(j == nomesAuxiliares.size()) {

                    k++;
                    j = k + ((j - j) + 1);
                }
            }
        })
    }
}
  • 1

    Hello! Welcome to Sopt. You need to provide more information about your problem, where you try to do it and how. Do this here

  • It would be in the part of the AUX variable (taking the Edittext value) and then compare in the IF to enter into the loop.

  • if(Aux1.equals("0")) { int cont = counter.get(k) + 1; counter.remove(k); counter.add(k, cont); first place.setText(String.valueOf(counter.get(k)); } Else if(Aux1.equals("1")) { int cont2 = counter.get(j) + 1; counter.remove(j); counter.add(j, cont2); first place.setText(String.valueOf(counter.get(j)); }

  • When you click 0 in editText and compare in the IF is not entering the loop.

  • Have you debugged? Have you tried transforming this string you receive in edittext into an integer? If so

  • I’ve done it and give error the App

  • What mistake it makes??

  • I tried turning to integer: String aux = vitoria.gettext(). toString(); int num = Integer.parseint(aux); But error the App (closes the App)

  • the part you have has "if (num == 0)" and "Else if (num == 1). Are you passing? Because I believe that the part is null.

  • Not passing, I put so String aux = vitoria.gettext(). toString(); int num = Integer.parseint(aux); "if(num == 0) and Else if(num == 1)", but does not enter if when the user writes to Edittext 0 or 1

  • I found possible 2 errors in the code, I’ll try to fix it here and send you the first one is that when you initialize the layout edittext is null, so you can’t recover this value like this, the other error I saw this here: vitoria.setText(""); You undo edittext and then call compare Men, it will never fall into condition even. I’ll try to set it up here.

  • Okay, thank you. I’ll wait

Show 7 more comments

1 answer

0

Underneath your:

 for(int s = 0; s < nomesAuxiliares.size(); s++) {
        contador.add(s, 0);
    }

Place a Watcher for your edittext

    vitoria.addTextChangedListener(new TextWatcher() {

        public void afterTextChanged(Editable s) {

 if(j > k) {

                    nome1.setText(nomesAuxiliares.get(k));
                    nome2.setText(nomesAuxiliares.get(j));

                    String aux = vitoria.getText().toString();
                     //Importante verificar se aux é nulo ou está vazio
        //se for nulo ou vazio num será 0
        int num = 0;
        if (aux != null && !aux.equals("")){
          num = Integer.parseInt(aux);
        }

        if(num == 0) {

            int cont = contador.get(k) + 1;
            contador.remove(k);
            contador.add(k, cont);
            primeiroLugar.setText(String.valueOf(contador.get(k)));

        }

        else if(num == 1) {

            int cont2 = contador.get(j) + 1;
            contador.remove(j);
            contador.add(j, cont2);
            primeiroLugar.setText(String.valueOf(contador.get(j)));

        }
                }
                else if(j <= k) {

                }
                k = 0;
                j = 2;
                //k = 0;
                //j = 1;
                //compararNomes(k, j);
        //TODOS CONTRA TODOS: logica como vai funcionar o jogo (vai aparecer na terceira tela)


        }

        public void beforeTextChanged(CharSequence s, int start, int count, int after) {}

        public void onTextChanged(CharSequence s, int start, int before, int count) {}
    });

And on the Save Button leave the win.settext at the end:

  salvar.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (k == (nomesAuxiliares.size() - 1)) {

                /*for(int m = 0; m < contador.size(); m++) {

                    if(contador.get(m) == null) {

                        //contador.add(m, 0);

                    }

                }*/
                for (Integer valor : contador) {

                    if (valor > maiorValor) {

                        maiorValor = valor;

                    }
                }

                //primeiroLugar.setText(String.valueOf(maiorValor));
            }

            compararNomes(k, j);

            j++;
            if (j == nomesAuxiliares.size()) {

                k++;
                j = k + ((j - j) + 1);
            }

            vitoria.setText("");
        }
    });
  • I can’t analyze the code better today, but I think it’s correct. Everything that is in afterTextChanged is always updated when the user changes edittext

  • Okay, I’ll check it out. Thank you

  • in your comparison method you can also transform the aux string into int : int num = 0; if (aux != null && !aux.equals("")){ num = Integer.parseint(aux); } and nos if instead of using aux, uses the num.

  • Okay, I’ll do that. Thank you

  • It worked out what I wanted. Thank you

  • If my answer has solved the problem, please accept it as an answer, and if possible mark it as useful. Thank you and any questions just speak.

Show 1 more comment

Browser other questions tagged

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