Code with indeterminate entries, showing pairs in ascending and odd order in descending order

Asked

Viewed 325 times

0

I’m doing an exercise where the user places an indeterminate amount of numbers and they have to be presented by dividing the pairs of the odd ones, being the pairs increasingly and the odd decreasing.

My question is how to take advantage of the loop of my code to finally present all. I could do using classes like ArrayList, but I wonder if there’s a way to continue in my code.

package exer5proposto2;
import javax.swing.JOptionPane;


public class Exer5Proposto2 {


    public static void main(String[] args) {
        int n1 = 0, maior = 0, menor = 100000, cont = 0, i;
        String aux = "", resp = "";

        while(!"n".equals(resp)){
            aux = JOptionPane.showInputDialog(null, "Informe um número ");
            n1 = Integer.parseInt(aux);
            cont = cont+1;

            if(n1 % 2 == 0){
            for(i = 0; i < cont; i++){ //esse for poderia estar fora do while, no entanto ele ia guardar apenas uma posição (sendo impossivel fazer comparação), 
                if(maior < n1){      //então para não ter que fazer um vetor coloquei o for dentro do while assim ele ja faz as comparaçoes e salva 
                    maior = n1;  //essa seria uma das importancias de um vetor, armazenar um valor de um loop para outro loop externo a ele
                }            
            }
            }else{
            for(i = 0; i < cont; i++){ //esse for poderia estar fora do while, no entanto ele ia guardar apenas uma posição (sendo impossivel fazer comparação), 
                if(menor > n1){      //então para não ter que fazer um vetor coloquei o for dentro do while assim ele ja faz as comparaçoes e salva 
                    menor = n1;  //essa seria uma das importancias de um vetor, armazenar um valor de um loop para outro loop externo a ele
                }            
            }
            }
           resp = JOptionPane.showInputDialog(null, "Informe 's' para continuar e 'n' para sair");

        }



    }

}

1 answer

1

Your code does not store all read numbers. Therefore, there is no way it can display them later in any order whatsoever.

I mean, you’ll probably have to:

  • Use two ArrayLists, one for pairs and one for odd ones. You can use this:

    (n % 2 == 0 ? pares : impares).add(n);
    
  • After reading all the numbers, sort the ArrayLists using the method sort(Comparator).
  • Use as method parameters sort:
    • (a, b) -> a - b - rising order.
    • (a, b) -> b - a - descending order.

Browser other questions tagged

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