[resolvido] Ajuda - Erro de Lógica

6 respostas
joaov777

Olá galera!! Criei duas classes bem simples em Java. O usuario deve digitar o nome, telefone e numero da ficha do aluno e o programa retornará a impressão, muito básico.
O fato é que não há erro de sintaxe e o compilador não retorna o esperado(nome, telefone e ficha previamente digitados).

O codigo:

–> Classe DemoPessoa

import java.util.Scanner;

	public class DemoPessoa {
		public static void main(String args[]) {
			
		Scanner sc = new Scanner(System.in);
		Pessoa p = new Pessoa();
		
		
		System.out.println("Insira o nome do aluno: ");
		p.setNome(sc.nextLine());

		System.out.println("Insira o telefone do aluno: ");
		p.setTelefone(sc.nextInt());

		System.out.println("Insira o nome do aluno: ");
		p.setFichaDeInscricao(sc.nextInt());

		
		System.out.println("Mostra dados");
		
		System.out.printf("Nome: " +p.getNome());
		System.out.println("Telefone: " +p.getTelefone());
		System.out.println("Ficha de Inscricao: " +p.getFichaDeInscricao());

	}

}

–> Classe Pessoa

public class Pessoa {

	private String nome;
	private int telefone;
	private int fichaDeInscricao;
	

	public String getNome( ) {

	return nome;
	
	}

	public void setNome(String nome) {

	this.nome=nome;

	}

	public int getTelefone( ) {

	return telefone;

	}

	public void setTelefone(int telefone) {

	this.telefone = telefone;

	}

	public int getFichaDeInscricao( ) {

	return fichaDeInscricao;

	}

	public void setFichaDeInscricao(int fichaDeInscricao) {

	this.fichaDeInscricao = fichaDeInscricao;

	}
	
	//Nao usei esse metodo, preferi imprimir os dados pela classe Main
	public void showAll() {
		
		System.out.println("Dados do aluno: ");
		
		System.out.printf("Nome: " +getNome());
		System.out.println("Telefone: " +getTelefone());
		System.out.println("Ficha de Inscricao: " +getFichaDeInscricao());
		
		
	}


}

Não há nenhum erro de sintaxe, porém, há erro de lógica…
–> Saida do programa:

Insira o nome do aluno:
Maria da Jurema

Insira o telefone do aluno:
8841

Insira o nome do aluno: -----> nao era pra vir essa linha novamente, era pra sair os dados digitados anteriormente.

alguem pode me ajudar?

6 Respostas

L

E ai joaov777

Parece que seu programa não tem problema não.
A única coisa que parece que estar te confundindo é com relação a um dos System.out.println.
Veja:

System.out.println("Insira o nome do aluno: "); 
p.setNome(sc.nextLine()); 

System.out.println("Insira o telefone do aluno: "); 
p.setTelefone(sc.nextInt()); 

System.out.println("Insira o nome do aluno: "); 
p.setFichaDeInscricao(sc.nextInt());

Não é que ele está aparecendo a linha novamente. O que está digitado para imprimir está repetido.
Experimente trocar a mensagem do último System.out.println para ("Insira a inscrição do aluno" );

System.out.println("Insira o nome do aluno: "); 
p.setNome(sc.nextLine()); 

System.out.println("Insira o telefone do aluno: "); 
p.setTelefone(sc.nextInt()); 

System.out.println("Insira a inscrição do aluno: "); 
p.setFichaDeInscricao(sc.nextInt());

Ps: Ao postar códigos, utilize a tag de código [code] ok??

Qualquer dúvida posta aqui.

romarcio
public class DemoPessoa {
    public static void main(String args[]) {

        Scanner sc = new Scanner(System.in);
        Pessoa p = new Pessoa();


        System.out.println("Insira o nome do aluno: ");
        p.setNome(sc.nextLine());

        System.out.println("Insira o telefone do aluno: ");
        p.setTelefone(sc.nextInt());

        System.out.println("Insira a inscricao do aluno: ");
        p.setFichaDeInscricao(sc.nextInt());

        System.out.println("Mostra dados");

        System.out.printf("Nome: " + p.getNome());
        System.out.println("Telefone: " + p.getTelefone());
        System.out.println("Ficha de Inscricao: " + p.getFichaDeInscricao());

    }
}

Insira o nome do aluno:
marcio
Insira o telefone do aluno:
32223265
Insira a inscricao do aluno:
123469

Mostra dados
Nome: marcio
Telefone: 32223265
Ficha de Inscricao: 123469

joaov777

Bom galera, apesar do “erro” ter sido totalmente falta de atenção… heheh agradeço ao toque e muito obrigado por me ajudarem…
Um fato curioso é que eu sempre cancelava a execução quando o console do Eclipse retornava "Insira o nome do aluno: " novamente, mal eu sabia que se eu teclasse enter o resultado estaria lá e, concerteza erra só falta de atenção… ^^ :smiley:

Desculpa pelo tópico todo mal feito, mas é porque sou novo por aqui… Mas ja li a pagina “Você é novo no GUJ?” toda e agora ja sei postar corretamente.
Obg galera!!

florio

Opa fi… Sempre que pudermos ajudar, conte com o pessoal do GUJ!

Só falto mesmo o [resolvido] no título ok?

[]'s

ViniGodoy

Atenção. Sempre que ler do console use APENAS o comando nextLine(). Toda string do console é terminada em \n. E você precisa ler esse \n a cada leitura. O que acontece, é que algumas leituras do nextInt() deixam o \n no buffer do Scanner, e numa próxima chamada à nextLine() o java interpreta que aquele \n foi a digitação de uma linha em branco, dando a impressão de que o comando foi ignorado. Eis o seu programa corrigido:

public class DemoPessoa {
    public static void main(String args[]) {

        Scanner sc = new Scanner(System.in);
        Pessoa p = new Pessoa();


        System.out.println("Insira o nome do aluno: ");
        p.setNome(sc.nextLine());

        System.out.println("Insira o telefone do aluno: ");
        p.setTelefone(Integer.parseInt(sc.nextLine()));

        System.out.println("Insira a inscricao do aluno: ");
        p.setFichaDeInscricao(Integer.parseInt(sc.nextLine()));

        System.out.println("Mostra dados");

        System.out.printf("Nome: " + p.getNome());
        System.out.println("Telefone: " + p.getTelefone());
        System.out.println("Ficha de Inscricao: " + p.getFichaDeInscricao());

    }
}
joaov777

Obrigado a todos! ^^

Criado 9 de agosto de 2010
Ultima resposta 11 de ago. de 2010
Respostas 6
Participantes 5