Fiz o seguinte programa que deveria ler uma sucessao de numero e fazer o seu somatorio. Se o mesmo numero fosse repetido 2 vezes seguidas, deveria pedir outro e rejeitar aquele. mas não consigo faze-lo rejeitar numeros iguais.
public static void main(String[] args) {
System.out.println("Insira um numero: ");
float numero= new Scanner(System.in).nextFloat();
double soma=0;
double teste=0;
int cont=0;
do {
soma=soma+numero;
cont++;
teste=soma-numero;
if ( teste==soma ){
cont--;
soma=soma-numero;
System.out.println("Inseriu o mesmo numero duas vezes! \n Cloque outro numero: ");
numero = new Scanner(System.in).nextFloat();
cont++;
soma=soma+numero;
}
System.out.println("Insira um numero: ");
numero= new Scanner(System.in).nextFloat();
} while (numero!=0);
System.out.println("A soma dos numero introduzidos foi: "+soma);
System.out.println("Foram introduzidos: " + cont);
}
bom… pra vc comparar os numeros vc tera q ter esses em uma lista(vetor), assim vc podera manipula-lo.
meu racicionio, talvez outra pessoa consiga diferente:
1- solicitar o numero para o usuario;
2 - verificar se ja existe no vetor;
3 - se existir, exibir a mensgem ao usuario, e solicitar novo numero
e assim por diante.
você tem que fazer algumas modificações, primeiro, se você usa o do while, deve tirar a leitura antes de entrar nesse laço de repetição, você coloca variáveis que nem usa depois, além de fazer soma várias vezes, eu modifiquei seu código que funcionou e usando menos linhas.
public static void main(String[] args) {
float soma=0;
int cont=0;
float numero, numeroAnterior;
numeroAnterior=0;
do {
System.out.println("Insira um numero: ");
numero= new Scanner(System.in).nextFloat();
if ( numero==numeroAnterior&&cont!=0){
cont--;
System.out.println("Inseriu o mesmo numero duas vezes! \n Cloque outro numero: ");
numero = new Scanner(System.in).nextFloat();
cont++;
}
numeroAnterior=numero;
soma=soma+numero;
cont++;
} while (numero!=0);
System.out.println("A soma dos numero introduzidos foi: "+soma);
System.out.println("Foram introduzidos: " + cont);
}
primeira coisa que fiz foi instanciar as variáveis que iria usar, depois como o do…while sempre executa a primeira vez você não precisa colocar nada antes, então nesse laço de repetição eu peço para o usuário digitar um número, então eu comparo se o número é igual ao anterior, e como o número anterior começa com o valor, pois para comparar ele tem que ter valor para não retornar null, então eu também comparo se é não é o primeiro número, se entrar nessa condição eu só peço para o usuário adicionar um outro número, se no exercício tiver que garantir que esse número não seja igual ao anterior é só trocar o if pelo while, e por último eu faço a soma e coloco o número anterior como o último digitado.
[Bons estudos!](https://www.devmedia.com.br/java-collections-set-list-e-iterator/29637)
import java.util.List;
import java.util.Map;
import java.util.Set;
public class Foo {
List<Integer> listList;
Set<Integer> listSet;
Map<Integer, Double> listMap;
/* Se você aprender a trabalhar com essas três
*interfaces vai economizar bastante tempo em seus futuros códigos.
**/
}