none
Dúvida! RRS feed

  • Pergunta

  • Eu estou a tentar fazer um programa em que ao escrever um nome na consola um dos quatro nomes apresentados no código, a mesma escreverá 4 características acerca do nome. Infelizmente, só funciona quando escrevo o nome Ricardo mesmo quando não o ponho em primeiro lugar.

    Gostava que me apresentassem alternativas para que o código funcione!

    Obrigado :)

    O código -

    "

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;

    namespace Familia
    {
        class Program
        {
            static void Main(string[] args)
            {
                string nome, emprego, nacionalidade;
                byte idade;



                Console.Write("Name:");

                if (Console.ReadLine() == "Ricardo")
                {
                    nome = "Ricardo";
                    idade = 44;
                    emprego = "Professor de educação física";
                    nacionalidade = "Português";

                }
                if (Console.ReadLine() == "Isabel")
                {
                    nome = "Isabel";
                    idade = 44;
                    emprego = "Professora de educação especial";
                    nacionalidade = "Portuguesa";

                }
                if (Console.ReadLine() == "Diogo")
                {
                    nome = "Diogo";
                    idade = 14;
                    emprego = "Estudante";
                    nacionalidade = "Português";

                }
                if (Console.ReadLine() == "Filipa")
                {
                    nome = "Filipa";
                    idade = 18;
                    emprego = "Estudante";
                    nacionalidade = "Portuguesa";

                }
                else
                {
                    Console.Write("Nome inválido");
                }

                Console.Write("Nome: " + nome + "; Idade: " + idade + "; Emprego: " + emprego + "; Nacionalidade: " + nacionalidade);
                Console.Read();
            }
        }
    }

    "


    • Editado RyuzakiPT terça-feira, 5 de dezembro de 2017 20:05
    terça-feira, 5 de dezembro de 2017 20:04

Respostas

  • Nao coloque a leitura aqui:

      string nome, emprego, nacionalidade, leitura = Console.ReadLine(); ;

    Voce pode fazer assim:

      string nome, emprego, nacionalidade, leitura;

    e depois:

    Console.Write("Name:");
    leitura=Console.ReadLine() ;
    
    

    Console.ReadLine é um comando de leitura. Ele interrompe o fluxo do programa e espera que voce digite algo e pressione a tecla Enter. Se voce coloca no topo, o programa para la e nao depois da mensagem 

    Name:

    Por isso voce pode nao estar entrando a informaçao no momento correto.

    Att




    William John Adam Trindade
    Analyste-programmeur


    Sogi Informatique ltée


    If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer". Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".


    terça-feira, 5 de dezembro de 2017 21:23
    Moderador
  • Estranho mesmo.

    Não tem como o código do William estar errado. É um código simples, e que não tem como ter outra interpretação. Creio que tem algum erro seu na hora da cópia.

    Copie de novo e tente. Tenho certeza que dará certo.


    Antero Marques
    _____________________________________________________________________________
    Se a resposta for útil, marque como útil, se respondeu totalmente sua dúvida, marque como resposta. O Fórum MSDN é utilizado também como base de conhecimento, então é responsabilidade de todos mantê-lo organizado e funcional.


    quarta-feira, 6 de dezembro de 2017 02:15

Todas as Respostas

  • Voce tem que ler a informaçao e guardar em uma variavel, assim:

    string leitura= Console.ReadLine();
    if ( leitura== "Ricardo")
    {
    	nome = "Ricardo";
    	idade = 44;
    	emprego = "Professor de educação física";
    	nacionalidade = "Português";
    
    }
    if (leitura == "Isabel")
    {
    	nome = "Isabel";
    	idade = 44;
    	emprego = "Professora de educação especial";
    	nacionalidade = "Portuguesa";
    
    }

    att


    William John Adam Trindade
    Analyste-programmeur


    Sogi Informatique ltée
    If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer". Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".


    terça-feira, 5 de dezembro de 2017 20:15
    Moderador
  • Obrigado pela resposta mas continua a só funcionar com o nome Ricardo...
    terça-feira, 5 de dezembro de 2017 20:25
  • Voce vai ter que usar uma estrutura em cascata ELSE IF

    Testei aqui e funciona

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace Familia
    {
        class Program
        {
            static void Main(string[] args)
            {
                string nome, emprego, nacionalidade;
                byte idade;
    
                nome = "";
                idade = 0;
                emprego = " ";
                nacionalidade = "";
                    
    
                Console.Write("Name:");
                string leitura=Console.ReadLine() ;
                if (leitura == "Ricardo")
                {
                    nome = "Ricardo";
                    idade = 44;
                    emprego = "Professor de educação física";
                    nacionalidade = "Português";
    
                }
                else if (leitura == "Isabel")
                {
                    nome = "Isabel";
                    idade = 44;
                    emprego = "Professora de educação especial";
                    nacionalidade = "Portuguesa";
    
                }
                else if (leitura == "Diogo")
                {
                    nome = "Diogo";
                    idade = 14;
                    emprego = "Estudante";
                    nacionalidade = "Português";
    
                }
                else if (leitura == "Filipa")
                {
                    nome = "Filipa";
                    idade = 18;
                    emprego = "Estudante";
                    nacionalidade = "Portuguesa";
    
                }
                else
                {
                    Console.Write("Nome inválido");
                }
    
                Console.Write("Nome: " + nome + "; Idade: " + idade + "; Emprego: " + emprego + "; Nacionalidade: " + nacionalidade);
                Console.Read();
            }
        }
    }


    Veja o resultado

    Name:Diogo
    Nome: Diogo; Idade: 14; Emprego: Estudante; Nacionalidade: Português

    Exsitem maniera bem mais elegantes de fazer esse codigo, mas da forma que esta fica facil de entnder a logica.


    William John Adam Trindade
    Analyste-programmeur


    Sogi Informatique ltée


    If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer". Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".



    terça-feira, 5 de dezembro de 2017 20:30
    Moderador
  • Continua a não dar!
    terça-feira, 5 de dezembro de 2017 20:46
  • using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;

    namespace Familia
    {
        class Program
        {
            static void Main(string[] args)
            {
                string nome, emprego, nacionalidade, leitura = Console.ReadLine(); ;
                byte idade;

                nome = "";
                idade = 0;
                emprego = " ";
                nacionalidade = "";


                Console.Write("Name:");



                if (leitura == "Ricardo")
                {
                    nome = "Ricardo";
                    idade = 44;
                    emprego = "Professor de educação física";
                    nacionalidade = "Português";

                }
                else if (leitura == "Isabel")
                {
                    nome = "Isabel";
                    idade = 44;
                    emprego = "Professora de educação especial";
                    nacionalidade = "Portuguesa";

                }
                else if (leitura == "Diogo")
                {
                    nome = "Diogo";
                    idade = 14;
                    emprego = "Estudante";
                    nacionalidade = "Português";

                }
                else if (leitura == "Filipa")
                {
                    nome = "Filipa";
                    idade = 18;
                    emprego = "Estudante";
                    nacionalidade = "Portuguesa";

                }
                else
                {
                    Console.Write("Nome inválido");
                }

                Console.Write("Nome: " + nome + "; Idade: " + idade + "; Emprego: " + emprego + "; Nacionalidade: " + nacionalidade);
                Console.Read();
            }
        }
    }

    _______________________________________________________________________________

    O código está assim agora

                        
    • Editado RyuzakiPT terça-feira, 5 de dezembro de 2017 20:51
    terça-feira, 5 de dezembro de 2017 20:50
  • Nao coloque a leitura aqui:

      string nome, emprego, nacionalidade, leitura = Console.ReadLine(); ;

    Voce pode fazer assim:

      string nome, emprego, nacionalidade, leitura;

    e depois:

    Console.Write("Name:");
    leitura=Console.ReadLine() ;
    
    

    Console.ReadLine é um comando de leitura. Ele interrompe o fluxo do programa e espera que voce digite algo e pressione a tecla Enter. Se voce coloca no topo, o programa para la e nao depois da mensagem 

    Name:

    Por isso voce pode nao estar entrando a informaçao no momento correto.

    Att




    William John Adam Trindade
    Analyste-programmeur


    Sogi Informatique ltée


    If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer". Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".


    terça-feira, 5 de dezembro de 2017 21:23
    Moderador
  • Já entendi o problema, se eu escrever 3 vezes Diogo clicando no enter depois de cada uma, à terceira já dá por este ser o 3º nome a ser introduzido.

    Não sei é como resolver, talvez através de outra forma em vez do if e do else if?

    terça-feira, 5 de dezembro de 2017 21:26
  • Isso no seu codigo original... mas na ultima versao do seu codigo isso nao deveria ocorrer.

    Voce chegou a testar o meu codigo?

    Att


    William John Adam Trindade
    Analyste-programmeur


    Sogi Informatique ltée
    If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer". Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".


    terça-feira, 5 de dezembro de 2017 21:38
    Moderador
  • Testei e não funcionou :/
    terça-feira, 5 de dezembro de 2017 21:46
  • Voce poderia me dizer o que exatamente nao funcionou? Deu algum tipo de erro?

    Diga-me extamente o que esta dando errado. Nos meus testes aqui funciona perfeitamente.

    Att


    William John Adam Trindade
    Analyste-programmeur


    Sogi Informatique ltée
    If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer". Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".

    terça-feira, 5 de dezembro de 2017 21:50
    Moderador
  • Ao escrever o nome Isabel, por exemplo, clico no enter e só recebo as informações se voltar a escrever outra vez e a clicar no enter e deveria ser à primeira. Isso acontece com o Diogo só dando à terceira e com o nome Filipa só dando à quarta.
    terça-feira, 5 de dezembro de 2017 21:57
  • Tem certeza que esta usando exatamente o codigo que eu propus? Isso ocorre somente na sua versao inicial

    Att


    William John Adam Trindade
    Analyste-programmeur


    Sogi Informatique ltée
    If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer". Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".


    terça-feira, 5 de dezembro de 2017 22:04
    Moderador
  • Estranho mesmo.

    Não tem como o código do William estar errado. É um código simples, e que não tem como ter outra interpretação. Creio que tem algum erro seu na hora da cópia.

    Copie de novo e tente. Tenho certeza que dará certo.


    Antero Marques
    _____________________________________________________________________________
    Se a resposta for útil, marque como útil, se respondeu totalmente sua dúvida, marque como resposta. O Fórum MSDN é utilizado também como base de conhecimento, então é responsabilidade de todos mantê-lo organizado e funcional.


    quarta-feira, 6 de dezembro de 2017 02:15
  • Bom dia,

    Por falta de retorno essa thread está encerrada.

    Se necessário, favor abrir uma nova thread.

    Atenciosamente,

    Filipe B de Castro

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    segunda-feira, 11 de dezembro de 2017 12:34
    Moderador