Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

eliseu mendez

problema com FOR em JAVA

Recommended Posts

//o programa pula var cliente, a partir do 2 cliente. ou seja ele lé apenas o primeiro..

 

import java.util.Scanner;

 

public class cliente {

 

public static void main (String [] args)

{

Scanner leia = new Scanner (System.in);

String cliente;

double preco, venda;

int qtdade, cod;

int contador;

double somav1 = 0;

for ( contador = 1 ; contador < 11; contador++)

{

 

System.out.println ("Cliente:");

cliente = leia.nextLine();

System.out.print ("Código: ");

cod = leia.nextInt();

System.out.print ("Preço: ");

preco = leia.nextDouble();

System.out.print ("Quantindade: ");

qtdade = leia.nextInt();

 

venda = preco*qtdade;

somav1 =somav1+venda;

 

System.out.println ("Código: "+cod);

System.out.println ("Preço: "+preco);

System.out.println ("Quantidade: "+qtdade);

System.out.println ("Venda: "+venda);

}

System.out.print ("Total de venda: "+somav1);

}

 

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se eu entendi direito, apenas o segundo cliente não está sendo lido. Experimenta usar .next() ao invés de .nextLine e vê se resolve. Mas aparentemente o código está certo. Estranho...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Voce tem que instanciar um novo System.in toda vez que desejar inserir um novo cliente ou seja tem que colcocar ele dentro do for

 

//o programa pula var cliente, a partir do 2 cliente. ou seja ele lé apenas o primeiro..

import java.util.Scanner;

public class cliente {

	public static void main (String [] args)
	{
		Scanner leia;
		String cliente;
		double preco, venda;
		int qtdade, cod;
		int contador;
		double somav1 = 0;
		for ( contador = 1 ; contador < 11; contador++)
		{
			leia = new Scanner (System.in); // tem que instanciar um novo Scanner toda vez

			System.out.println ("Cliente:");
			cliente = leia.nextLine();
			System.out.print ("Código: ");
			cod = leia.nextInt();
			System.out.print ("Preço: ");
			preco = leia.nextDouble();
			System.out.print ("Quantindade: ");
			qtdade = leia.nextInt();

			venda = preco*qtdade;
			somav1 =somav1+venda;

			System.out.println ("Código: "+cod);
			System.out.println ("Preço: "+preco);
			System.out.println ("Quantidade: "+qtdade);
			System.out.println ("Venda: "+venda);
		}
		System.out.print ("Total de venda: "+somav1);
	}

} 

quando for postar codigo use a tag codigo do editor

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não que seja necessário o modo como você apresentou funciona muito bem a questão é que...

 

se você instancia um novo objeto a toda entrada acaba por garantir que os dados nunca irão se "misturar" como acontece se usar o nextLine(), o next basicamente "limpa" todo o conteúdo do objeto e então o prepara para uma nova inserção.

 

Ou seja tanto faz, talvez se estiver lendo 4000 linhas seria muito melhor fazer com next() pela causa de não ter que instanciar uma nova classe.

 

aí é você quem manda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.