Problemas com do while

13 respostas
fabiomarcilio

boa noite pessoal, preciso implementar no cod. abaixo p/ ler 10 valores que o usuario digitar, mas somente se o valor lido for diferente de 0, só que nao estou conseguindo, só insere o primeiro digitado e encerra a insercao. nao sei trabalhar com o do while direito.

public static void main(String[] args) {
    Integer val;
    int cont=0;
    Scanner dados = new Scanner(System.in);
    ListaBiligada list; list = new ListaBiligada();

    System.out.println("Criação da lista");
    System.out.println("Digite 10 valores para a lista");
   do{
        val = dados.nextInt();
        if(val!=0)
            cont++;
           list.insert(val);
   } while(cont == 10);
    System.out.println("A quantidade é: "+ListaBiligada.nElem);
    System.out.println(list.toString());
    System.out.println("Deseja Deletar Algum item da lista? Insira o valor ");
    val = dados.nextInt();
    list.delete(val);
    System.out.println(list.toString());
    System.out.println("Digite o valor a ser buscado");
    val=dados.nextInt();
    if(list.search(val))
        System.out.println("Elemento encontrado");
    else
        System.out.println("Elemento não encontrado");
}
}

13 Respostas

drsmachado
} while(cont == 10);

Na linha selecionada, após a primeira iteração:
While = enquanto
cont = 1
1 != 10

Manjou?

fabiomarcilio

manjei sim drsmachado, arrumei aqui para cont != 10 e funcionou, estava passando despercebido.

Muito obrigado pela ajuda!!

Abraço

drsmachado

fabiomarcilio:
manjei sim drsmachado, arrumei aqui para cont != 10 e funcionou, estava passando despercebido.

Muito obrigado pela ajuda!!

Abraço


Não tá faltando nada?
p/ ler 10 valores que o usuario digitar, mas somente se o valor lido for diferente de 0…

fabiomarcilio

sim, p/ isso eu coloquei:

do{ val = dados.nextInt(); if(val!=0){ cont++; list.insert(val); }else{ System.out.print("Valor 0 inválido"); } } while(cont != 10);

funciona, mas ele para na msg, quero que volte p/ a inserção

drsmachado

Repito:


Não tá faltando nada?
p/ ler 10 valores que o usuario digitar, mas somente se o valor lido for diferente de 0…

Pois

do{
//faz algo aqui
}while(cont != 10);

Cobre apenas parte da proposta. E se o sujeito digitou 5 números e o sexto for zero, como faz?
Tá faltando uma parte da solução, não?

fabiomarcilio

verdade, estou tentando aqui

fabiomarcilio

pra matar o while eu coloquei cont=10

do{ val = dados.nextInt(); if(val!=0){ cont++; list.insert(val); }else{ System.out.print("Valor 0 inválido"); cont=10; } } while(cont != 10);
agora para ele apresentar a msg de valor invalido e continuar a inserção eu nao tenho ideia

thiagof

Olá fabiomarcilio

só por frescura minha, que tal usar o comando break para sair do loop?
ai ficaria assim:

do{ val = dados.nextInt(); if(val!=0){ cont++; list.insert(val); }else{ System.out.print("Valor 0 inválido"); break; } } while(cont != 10);

fabiomarcilio

pode ser tambem

G

tem q ser!

fabiomarcilio

com cont=10, funcionou normal, ele cai na ultima condição

G

funcionou. mas ficou feio.

e o cara q inventou o break ficou maguado!

mas falando sério, imagine se vc mudar de ideia e em vez de os primeiros 10, vc quizer os primeiros 15.

vc vai ter q mudar em 2 lugares.

fabiomarcilio

com certeza, o break é uma melhor solução

Criado 15 de abril de 2012
Ultima resposta 17 de abr. de 2012
Respostas 13
Participantes 4