Reputation: 546
I'm trying to output a variable that I'm getting as an input from the user, but I get the wrong number.
Here is my code so far:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace sequence
{
class Program
{
static void Main(string[] args)
{
int userInput = Console.Read();
Console.WriteLine("User input is: {0}", userInput.GetType());
Console.WriteLine("User input is: {0}", userInput);
}
}
}
Output:
3
User input type is: System.Int32
User input is: 51
Press any key to continue
If I type 4, I get 52. 5, 53 and so on.
Upvotes: 0
Views: 2108
Reputation: 5990
Use Console.ReadLine()
which returns string and you need to convert into int
Try this
namespace sequence
{
class Program
{
static void Main(string[] args)
{
var input = Console.ReadLine();
int userInput;
if (!int.TryParse(input, out userInput))
{
Console.WriteLine("You have entered invalid number");
}
else
{
Console.WriteLine("User input is: {0}", userInput.GetType());
Console.WriteLine("User input is: {0}", userInput);
}
Console.WriteLine("Press any key to exit");
Console.ReadKey();
}
}
}
Upvotes: 4
Reputation: 2309
That's because Console.Read()
returns the integer code of the character being read. You must subtract 48 from the char to get the actual number.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace sequence
{
class Program
{
static void Main(string[] args)
{
int userInput = Console.Read();
Console.WriteLine("User input is: {0}", userInput.GetType());
Console.WriteLine("User input is: {0}", userInput - 48);
}
}
}
Upvotes: 1