Ir ao conteúdo
  • Cadastre-se
Werck Monday

O comando "while" não tá executando de forma desejada. (java)

Recommended Posts

Olá pra todos vocês! 

Bem, eu estou começando na área de programação na faculdade e eu tenho uma duvida a respeito do "while" ao fazer um comando de parada (usando a palavra "Fim").

 

A questão diz pra criar tal programa que pede pro usuário digitar algumas informações de uma tal compra.

Ele pede: o nome da ação, o valor da compra, da venda dela e também a quantidade de vezes que a ação foi feita. O programa só irá encerrar quando o nome da ação for "Fim". O que a minha duvida é nessa parte. Quando digito fim (mesmo usando a opção equalsIgnore) ele ainda continua a executar as leituras e aí então ele encerra o programa. O que a questão diz é que logo após digitar "Fim" ele encerra. Vocês poderiam me ajudar enviando algumas dicas pra resolver essa questão? 

Código: 

import java.util.Scanner;

public class Exercicio1 {

	public static void main(String[] args) {

		String ação= "NULL";
		double compra, venda;
		int quant = 0;
		double lucro;
		int quantidade;

		Scanner scanner = new Scanner(System.in);
		while (!ação.equalsIgnoreCase("Fim") ) {
			System.out.println("Digite o nome da  ação");
			ação = scanner.next();

			System.out.println("Digite o preço da compra");
			compra = scanner.nextDouble();

			System.out.println("Digite o preço da venda");
			venda = scanner.nextDouble();

			System.out.println("Digite a quantidade comprada de cada ação");
			quantidade = scanner.nextInt();
		}

	}

}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Werck Monday

Você só precisa organizar quando as informações serão lidas.

Essa linha: 

System.out.println("Digite o nome da  ação");
			ação = scanner.next();

Deve ser movida para baixo, depois da quantidade comprada. Isso fará com que não seja pedido nada após essa entrada. E será testado no while.

 

E pra resolver o problema de não aparecer nenhuma ação inicial, repita esse código antes do while.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá  Werck Monday, revisei seu código e arrumei ele pra você, O problema maior era você ler o nome da ação e não testar se era "Fim" no primeiro caso, para isso você deve colocar antes do laço while, e depois, somente no final da leitura dos outros campos, para melhor compreensão eu refiz todo ele conservando a sua visão de programador, segue o código.

import java.util.Scanner;

public class teste {

	public static void main(String[] args) {

		String ação= "NULL";
		double compra, venda;
		int quant = 0;
		double lucro;
		int quantidade;

		Scanner scanner = new Scanner(System.in);
		System.out.println("Digite o nome da  ação");
		ação = scanner.next();
		
		while (!ação.equals("Fim")) {

			System.out.println("Digite o preço da compra");
			compra = scanner.nextDouble();

			System.out.println("Digite o preço da venda");
			venda = scanner.nextDouble();

			System.out.println("Digite a quantidade comprada de cada ação");
			quantidade = scanner.nextInt();
			
			System.out.println("Digite o nome da  ação");
			ação = scanner.next();
		}

	}

}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×