Javafree
Página Inicial do Fórum > Java Básico

While não funciona



Criar novo tópico   Responder tópico


  1. gabriel.138
    Posts:4


    Comment Arrow

    Publicado em: 25/03/2016 16:27:07

    Boa tarde;

    Estou fazendo um projeto e logo no começo deu um problema no fluxo do while. Na primeira execução funciona certo, faz todas as perguntas e registra os valores das variáveis.

    Quando o fluxo volta, só pede o nome e não deixa escrever o valor da variavel, indo automaticamente para o próximo campo que é o da idade.

    Fiz vários testes mudando o nome de lugar e alterado o fluxo if.

    Alguma dica?

    O código é esse.



    package Java;

    import java.util.Scanner;

    public class Clinica {

    /**
    * @param args
    */
    public static void main(String[] args) {
    // TODO Auto-generated method stub

    Scanner s = new Scanner (System.in);

    String sexo = "";
    int idade = 0;
    int peso = 0;
    double altura = 0.00;
    boolean valor = true;
    String nome="";

    int pessoas=0;
    while (valor == true){



    System.out.println("Digite seu nome" );
    nome = s.nextLine();

    if (nome.equalsIgnoreCase("fim" )){
    valor = false;
    }

    else {
    System.out.println("Qual a idade idade" );
    idade = s.nextInt();

    System.out.println("Qual a altura" );
    altura= s.nextDouble();
    pessoas++;
    }

    }

    }
    }



  1. Comment Arrow

    Publicado em: 23/04/2016 19:13:14

    Meu amigo o problema não é no while ao invés desse cógigo

    System.out.println("Digite seu nome" );
    nome = s.nextLine();//o problema está aqui

    tente esse:

    System.out.println("Digite seu nome" );
    nome = s.next().toString();

    Espero ter ajudado

  1. Comment Arrow

    Publicado em: 28/04/2016 14:23:23

    A Resposta do nosso amigo acima esta correta, porém, seu aplicativo não fará nada além de ficar pedindo para o usuário digitar um nome, idade e altura. O correto seria vc criar uma classe (paciente por exemplo), e a cada passagem no loop, ir adicionando uma instancia da classe. Quando o usuário digitar "fim" listaria TODOS os nomes, idades e alturas digitados. Que tal ? Tenta fazer, e qualquer dúvida, pergunta ai.
    _________________

    Sempre ajude alguém. Amanhã pode ser você precisando de uma ajuda!

  1. Comment Arrow

    Publicado em: 28/04/2016 17:08:38

    [quote="gabriel.138"]Boa tarde;

    Estou fazendo um projeto e logo no começo deu um problema no fluxo do while. Na primeira execução funciona certo, faz todas as perguntas e registra os valores das variáveis.

    Quando o fluxo volta, só pede o nome e não deixa escrever o valor da variavel, indo automaticamente para o próximo campo que é o da idade.

    Fiz vários testes mudando o nome de lugar e alterado o fluxo if.

    Alguma dica?

    O código é esse.



    package Java;

    import java.util.Scanner;

    public class Clinica {

    /**
    * @param args
    */
    public static void main(String[] args) {
    // TODO Auto-generated method stub

    Scanner s = new Scanner (System.in);

    String sexo = "";
    int idade = 0;
    int peso = 0;
    double altura = 0.00;
    boolean valor = true;
    String nome="";

    int pessoas=0;
    while (valor == true){



    System.out.println("Digite seu nome" );
    nome = s.nextLine();

    if (nome.equalsIgnoreCase("fim" )){
    valor = false;
    }

    else {
    System.out.println("Qual a idade idade" );
    idade = s.nextInt();

    System.out.println("Qual a altura" );
    altura= s.nextDouble();
    pessoas++;
    }

    }

    }
    }






    Fiz um modelo bem mais elaborado pra vc. Assim que eu descobrir como anexar arquivos aqui no fórum, eu te envio. Abs.
    _________________

    Sempre ajude alguém. Amanhã pode ser você precisando de uma ajuda!



  1. Lucasros
    Posts:1


    Comment Arrow

    Publicado em: 29/04/2016 11:41:43

    Bom dia.

    No caso, os métodos nextInt() e nextDouble() não consomem linhas. Somente o método nextLine(). Então ou você coloca um s.nextLine() depois dos outros métodos (nextInt() e nextDouble()), ou sempre use o nextLine() fazendo a conversão para int ou double.

    idade = Integer.parseInt(s.nextLine());
    altura = Double.parseDouble(s.nextLine());

    Espero ter ajudado.

    Abraço.



  1. Relacionados