Programa Java pulando instrução

3 respostas
LaasMs

Olá Pessoal, boa noite... Estou iniciando em Java(novamente) e comecei a fazer uns programinhas só pra relembrar... Criei uma classe Pessoa, onde tenho metodos para configurar algumas informações e outros para retornar esses dados... Segue o codigo...

public class Pessoa
{
	
	private String nome;
	private double peso;
	private double altura;
	
	public Pessoa(String name)
	{
		nome = nome;
	}
	
	public void setName( String name )//configura o nome
	{
		nome = nome;
	}
	
	public void setPeso( double peso )//configura o peso
	{
		peso = peso;
	}
	
	public void setAltura( double altura )//configura a altura
	{
		altura = altura;
	}
	
	public String getName()//retorna o nome
	{
		return nome;
	}
	
	public double getPeso()//retorna o peso
	{
		return peso;
	}
	
	public double getAltura()//retorna a altura
	{
		return altura;
	}
}

Em seguida criei a classe PessoaTest, so para testar a classe pessoa... (To seguindo a filosofia do Deitel...hehe...) ai vai o codigo da minha classe PessoaTest

public class PessoaTest
{
	public static void main(String args[])
	{
		Scanner input = new Scanner(System.in);
		
		Pessoa pessoa1 = new Pessoa("Fulano");
		Pessoa pessoa2 = new Pessoa("Siclano");
		
		
		
		String nome;
		double peso;
		double altura;
		
		
		
	
		System.out.println("Entre com o nome da Pessoa1: ");
		nome = input.nextLine();
		pessoa1.setName(nome);
		
		
		System.out.println("Entre com o peso de Pessoa1: ");
		peso = input.nextDouble();
		pessoa1.setPeso(peso);
		
		System.out.println("Entre com a altura de Pessoa1: ");
		altura = input.nextDouble();
		pessoa1.setAltura(altura);
		

		
	
		System.out.println("Entre com o nome da Pessoa2: ");
		nome = input.nextLine();
		pessoa2.setName(nome);
		
		System.out.println("Entre com o peso de Pessoa2: ");
		peso = input.nextDouble();
		pessoa2.setPeso(peso);
		
		System.out.println("Entre com a altura de Pessoa2: ");
		altura = input.nextDouble();
		pessoa2.setAltura(altura);
		
		
		
		
		if(pessoa1.getAltura() > pessoa2.getAltura())
		{
			System.out.printf("%s e  mais alta!!", pessoa1.getName());
		}
		else
		{
			System.out.printf("%s e mais alta!!", pessoa2.getName());
		}

		if(pessoa1.getPeso() > pessoa2.getPeso())
		{
			System.out.printf("%s e mais pesada!!", pessoa1.getName());
		}
		else
		{
			System.out.printf("%s e mais pesada!!", pessoa2.getName());
		}	
		
	}
}

A questão é que quando compilo meu programa ao inves de pedir para digitar o nome de "pessoa2" ele ja pula para o peso, ai a vira uma inhaca danada... :shock:
[img]http://img18.imageshack.us/img18/2496/imagemobb.jpg[/img]

Tenho consciencia de que é alguma desatenção ou um erro muito pequeno, mas não estou conseguindo descobrir o que é... :roll:

Desde já agradeço a todos que estiverem dispostos a ajudar!!

3 Respostas

pedromuyala

Substitui os println por print, somente! :idea:
Abraço.

LaasMs

Olá, peço desculpas por demorar a responder… Fiz exatamente o que me sugeriu, mas o problema persiste
Veja o print…

Vou reescrever o codigo completamente pra ver se resolvo, se alguem tiver alguma outra sujestão… Desde já agradeço

L

Caro LassMS,

achei o seu problema!!!
Ao invés de utilizar input.nextLine(), utilize input.next(), que ele não pulará mais a linha que você deseja.
Exemplo:

System.out.println("Entre com o nome da pessoa2: ");
nome = input.next();
pessoa2.setNome(nome);

Também percebi que na sua classe Pessoa, seus métodos set estão sem o this, talvez por isso seus objetos não estejam recebendo nenhum valor. Por exemplo:

public void setNome(String nome) {
      this.nome = nome;
}

Outra coisa, percebi que na sua classe Pessoa os métodos get e set para o atributo nome, ora manipulam o atributo nome, ora o atributo name (inexistente na classe). Mantenha o padrão, para nome com getNome() e setNome(String nome).

Veja se isto resolve, abraço.

Criado 26 de março de 2010
Ultima resposta 29 de mar. de 2010
Respostas 3
Participantes 3