Numeros repetidos

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.

Obrigado :wink: pode-me exemplificar como faria isso?

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.

1 curtida
[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.
    **/   
}
1 curtida

Ok já percebi! Muito obrigado :grin: