Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Readline recebe um valor diferente do informado

Estou fazendo alumas práticas e ao informar a idade, 29, por exemplo, percebo que a variavel recebe o número 50, mas não consigo identificar o motivo.

Obrigado pela atenção!

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

2 respostas
solução!

Olá Luiz, Beleza?

Isso acontece porque o comando Console.Read() não é usado para esse propósito, ele apenas lê 1 caracter de entrada e retorna o seu valor ASCII.

No seu caso, você estava digitando o valor 29, ele apenas capturava o valor 2 e se você ver na tablea ASCII, o caracter 2 tem valor decimal 50.

No seu caso, seria legal se você usasse o Console.ReadLine da mesma forma que fez para capturar a entrada do nome, e logo em seguida você o converte para inteiro.

Algo assim:

Console.WriteLine("Hello World!\n\n");
Console.Write("Digite seu nome: ");
string nome = Console.ReadLine();
Console.Write("Digite sua idade: ");

string idadeString = Console.ReadLine();

//uma simples validação de entrada para caso o usuario 
//informar um numero invalido
if(!int.TryParse(idadeString, out int idade))
{
         Console.WriteLine("Idade informada não é um numero inteiro válido!");
}
else
{
        Console.WriteLine($"\nNome: {nome}");
        Console.WriteLine($"Idade: {idade}\n");
}

Console.WriteLine($"\nExecução finalizada, {nome}. Aperte qualquer tecla para continuar.");
Console.ReadLine();

Valeu, Marcão!

Muito obrigado!