年龄变量总是出现" 49"。这是我的代码......
using System;
namespace testCS
{
class Program
{
static void Main(string[] args)
{
string name = "Bob";
int age = 0;
Console.Write("What is your name? ");
name = Console.ReadLine();
Console.WriteLine("Hello, " + name);
Console.Write("How old are you? ");
age = Console.Read();
Console.WriteLine(name + ", age " + age);
Console.ReadLine();
Console.WriteLine("Press any key to continue...");
Console.ReadLine();
}
}
}
答案 0 :(得分:5)
您正在使用Console.Read()
。它读取一个字符并将其代码点返回为int
。你应该使用
int.Parse(Console.ReadLine());
这会将一行读作string
,然后将其转换为int。
您还可以使用int.TryParse()
,它会尝试解析字符串并在成功时返回true
。
int age;
if(int.TryParse(Console.ReadLine, out age))
{
// success
}
else
{
// invalid input
}
答案 1 :(得分:3)
尝试在将输入分配给int之前解析输入。
age = Int32.Parse(Console.ReadLine());
Console.Read()
方法返回您在控制台中输入内容的字符代码。
答案 2 :(得分:3)
答案 3 :(得分:2)
Console.Read()读取一个字符并返回一个整数,这是一个老式的ASCII字符代码。
因此,如果您输入 18 ,则Console.Read()将
答案 4 :(得分:1)
此处发布的所有解决方案的替代方案,受到Max(现已删除)此问题评论的启发。
using System;
namespace testCS
{
class Program
{
static void Main(string[] args)
{
string name = "Bob";
string age = "";
Console.Write("What is your name? ");
name = Console.ReadLine();
Console.WriteLine("Hello, " + name);
Console.Write("How old are you? ");
age = Console.ReadLine();
Console.WriteLine(name + ", age " + age);
Console.ReadLine();
Console.WriteLine("Press any key to continue...");
Console.ReadLine();
}
}
}
基本上,如果您不打算使用数学来操纵年龄,并且您没有特别需要强制age
是一个数字,那么您可以使用字符串作为数据类型年龄变量,并确保在用户输入年龄时读取整行。现在你可以输入" 49"," 50.5"," old"," young","大约24个月&#34 ;对于年龄和程序仍然有效。根据您要完成的任务,这可能是可以接受的。