Ir ao conteúdo
  • Cadastre-se

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


Posts recomendados

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();
		}

	}

}

 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

@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.

Link para o comentário
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();
		}

	}

}

 

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...