Boa tarde rapaz.
Sua questão é interessante. Tenta fazer assim… Cria uma lista secundária e dentro de um laço de repetição vai adicionando os valores de sua lista. Antes de adicionar faça uma verificação, se aquele valor já existe na sua lista, se sim, incrementa um contador e remove esse valor da lista, se não apenas adicione o valor.
A questão de remover o valor assim que detectar o par é para que caso exista um segundo par desse valor, seja possível achá-lo também.
Engraçado que a tendência é a gente ficar naquele pensamento dentro da caixa. A primeira coisa que me veio à cabeça foi entrar num for, comparando valor, incrementado e o paranauê todo. kkkk
Solução bem elegante e prática essa!!!
Valeu por abrir minha mente.
Opa valeu irmão estou junto com o Rodrigo eu fiz um for e fui incrementando, mas ta rolando algo que não estou vendo pq não tras as informações que preciso, mas irei testar sua ideia.
Só tome cuidado na hora de realizar a comparação, pois por utilizar o i+1, pode ser que estoure a list, então o seu for deve ser i<list.length e não <=.
Pensei: pega o valor da iésima posição e divide por 2, se o resto for zero, é par.
Porém, só lendo as respostas é que entendi que o tal “par” é a combinação de dois valores iguais em posições distintas.
A pergunta que não quer calar é: o que você está estudando? Especificamente, sobre o quê é este exercício?
Explico: existe mais de uma forma de obter esta resposta, por isso preciso entender exatamente o cenário.
private int quantidadeLuvas = 0;
private ArrayList<Integer> tamanhos = new ArrayList<Integer>();
private int flag = 0;
private int y = 0;
public int getQuantidadeLuvas() {
return quantidadeLuvas;
}
public int insereQuantidade () {
do {
Scanner scan = new Scanner(System.in);
System.out.println("Entre com uma quantidade de luvas na caixa");
try {
quantidadeLuvas = scan.nextInt();
if(quantidadeLuvas < 1 || quantidadeLuvas > 100) {
System.out.println("Quantidade invalida entre com um valor de 1 a 100");
}
} catch(InputMismatchException e) {
System.out.println("Digite apenas numeros");
}
} while(quantidadeLuvas < 1 || quantidadeLuvas > 100);
return quantidadeLuvas;
}
public List<Integer> insereTamanho() {
do {
Scanner scanner = new Scanner(System.in);
System.out.println("Entre com os Tamanhos");
try {
y = scanner.nextInt();
if(y < 1 || y > 100) {
System.out.println("Tamanhos invalido entre com um tamanho de 1 a 100");
} else {
tamanhos.add(y);
flag++;
}
} catch(InputMismatchException e) {
System.out.println("Digite apenas numeros");
}
} while(flag < quantidadeLuvas);
return tamanhos;
}
}
Isso foi oq fiz, mas to travado aqui é um desafio não importa como eu faço!
private int quantidade = 0;
private int flag = 0;
private ArrayList<Integer> tamanho = new ArrayList<Integer>();
private int y = 0;
private int pares = 0;
public int getQuantidade() {
return quantidade;
}
public int inserirQuantidade() {
do {
Scanner scan = new Scanner(System.in);
try {
System.out.println("Entre com uma quantidade");
quantidade = scan.nextInt();
if(quantidade <1 || quantidade > 100) {
System.out.println("Quantidade invalida entre com uma quantidade de 1 a 100");
}
} catch(InputMismatchException e) {
System.out.println("Digite apenas numeros");
}
} while(quantidade <1 || quantidade >100);
return quantidade;
}
public List<Integer> inserirTamanho() {
do {
Scanner scan = new Scanner(System.in);
System.out.println("Digite um tamanho");
try {
y = scan.nextInt();
if(y < 1 || y > 100) {
System.out.println("Numero invalido entre com um numero de 1 a 100");
}else {
tamanho.add(y);
flag++;
}
} catch(InputMismatchException e) {
System.out.println("Digite apenas numeros");
}
} while(flag < quantidade);
return tamanho;
}
public List<Integer> mostraPares() {
Map<Integer, Integer> pairs = new HashMap<Integer, Integer>();
for(int i=0;i<tamanho.size();i++) {
if (!pairs.containsKey(tamanho.get(i))) {
pairs.put(tamanho.get(i), 1);
} else {
int total = pairs.get(tamanho.get(i));
pairs.put(tamanho.get(i), ++total);
}
}
for (Map.Entry<Integer, Integer> item : pairs.entrySet()) {
if (item.getValue() > 1) {
pares += (int) item.getValue() / 2;
}
}
return tamanho;
}
public List<Integer> mostraLista() {
for(int i=0;i<tamanho.size();i++) {
System.out.print(tamanho.get(i) + " ");
}
return tamanho;
}
public int getPares() {
return pares;
}
}
Talvez até tenha dado algumas voltas mas funcionou rsrs
Lembrando que existem N soluções para um mesmo problema, algumas mais fáceis, mais trabalhosas.
Mas o mais importante é que funcione. Só lembre que pode ser que não você a dar continuidade no trabalho para sempre, então procure aquela que você entenda e que o “talvezpróximo” possa entender com facilidade também.