这个程序运作不佳。输出总是: 你可以喝酒!
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Superif
{
class Program
{
static void Main(string[] args)
{
int age;
string result;
Console.WriteLine("Please enter your age!");
age = Console.Read();
if (age >= 18)
{
result = "You can drink alcohol!";
}
else
{
result = "You can't drink alcohol!";
}
Console.WriteLine(result);
Console.ReadKey();
}
}
}
答案 0 :(得分:4)
您使用的是错误的方法。 Console.Read
我的MDSN:
从标准输入流中读取下一个字符。
如果您输入"18"
并检查age
的值,则会看到它49
是"1"
的ASCII值。
使用Console.ReadLine()
代替读取整个字符串行,然后将其解析为int
:
static void Main(string[] args)
{
int age;
string result;
Console.WriteLine("Please enter your age!");
if(!int.TryParse(Console.ReadLine(),out age))
{
result = "Invalid Input";
}
else if (age >= 18)
{
result = "You can drink alcohol!";
}
else
{
result = "You can't drink alcohol!";
}
Console.WriteLine(result);
Console.ReadKey();
}
另请注意,我决定使用int.TryParse
而不是int.Parse
来避免无效投射的例外
答案 1 :(得分:3)
因为Console.Read()
会给你ASCII值而不是整数值。所以你应该试试Console.ReadLine()
。
int age;
string result;
Console.WriteLine("Please enter your age!");
age = Convert.ToInt32(Console.ReadLine());
if (age >= 18)
{
result = "You can drink alcohol!";
}
else
{
result = "You can't drink alcohol!";
}
Console.WriteLine(result);
Console.ReadKey();