代码有什么问题,在标题中收到错误。我认为这是一个语法错误,但我不确定,因为我几乎没有关于错误实际含义的信息
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Please Input Number of Rows you want to make in your pyrimid: ");
int num = int.Parse(Console.Read()); // error here
Console.WriteLine(num);// Just to check if it is getting the right number
Console.Read();//This is Here just so the console window doesn't close when the program runs
}
}
}
编辑:只是为了澄清,我希望代码只是从用户那里得到一个数字,然后打印用户输入的数字。
编辑:为快速回应干杯:D
答案 0 :(得分:8)
int.Parse
接受字符串作为参数。使用Console.ReadLine()
从用户处获取字符串,然后将其传递到int.Parse
int num = int.Parse(Console.ReadLine());
请注意,如果用户输入无法识别为FormatException
的内容,则会抛出int
。如果您不确定,用户将输入一个好的号码(我一直没有),请使用TryParse
。示例如下:
int value;
if (int.TryParse(Console.ReadLine(), out value))
Console.WriteLine("parsed number as: {0}", value);
else
Console.WriteLine("incorrect number format");
答案 1 :(得分:1)
问题是Console.Read()返回一个int,但int.Parse期望一个字符串。只需将其更改为
即可int num =Console.Read();
答案 2 :(得分:1)
Console.Read()
和ASCII 这种情况正在发生,因为Console.Read()
实际上会返回int
,而不是string
。它返回按下的键的ASCII代码,您需要将其转换为char然后转换为字符串,然后解析它。
var val = int.Parse(((char)Console.Read()).ToString());
请注意,Console.Read()
不会以您认为的格式返回整数,0
到9
的值实际上是60
到70
的值键代码不是您按下的字符。
Console.ReadLine()
另一种可能更好的解决方案是使用Console.ReadLine()
返回string
var val = int.Parse(Console.ReadLine());
使用int.Parse()
时应始终小心,因为如果提供的字符串不是数字,它将引发异常。一个更好的选择是使用int.TryParse()
,你给出一个out
参数,它返回解析是否成功。
string text = Console.ReadLine();
int val;
if (int.TryParse(text, out val))
{
// It is a number
}
{
// It is not a number
}
答案 3 :(得分:0)
你得到它的原因是因为Console.Read返回一个int
http://msdn.microsoft.com/en-us/library/system.console.read.aspx
它无法解析int,它只能解析字符串。
你可能想要Console.ReadLine - 它返回一个字符串。