class Program
{
static void Main(string[] args)
{
int par = 3;
int strokes = 4;
int score;
Console.Write("Enter Score ");
par = Convert.ToInt32(Console.ReadLine());
strokes = Convert.ToInt32(Console.ReadLine());
score = Convert.ToInt32(Console.ReadLine());
***bool parse = int.TryParse(strokes, out score);***
if (score < par)
Console.WriteLine("Score is below par.");
else if (score > par)
Console.WriteLine("Score is above par.");
else if (score == par)
Console.WriteLine("Score is equal to par.");
}
}
您好,我试图将笔画的值变为得分值,以便当用户输入他们制作的笔画数时,它会转换为得分...我突出显示的代码bool parse = int.TryParse(strokes, out score);
之前有效另一个节目。但是在这个上它告诉我我不能将字符串转换为int。我认为我做过:strokes = Convert.ToInt32(Console.ReadLine());
请你好!我是新手。
答案 0 :(得分:0)
您有语法问题和语义问题。首先,您将strokes
声明为int
。
int strokes = 4;
然后你分配了它(很好)
strokes = Convert.ToInt32(Console.ReadLine());
最后,您尝试将其解析为int,它已经是。
bool parse = int.TryParse(strokes, out score);
从语法上讲,int.TryParse
需要一个string
参数,您可以在其中向int
个参数发送int
参数。您始终可以参考the documentation关于您使用的方法进行说明。
但是,从语义上讲,您已经有int
,并且正在尝试将其解析为TryParse
,这是错误和冗余的。如果您拥有一个相信为int
的字符串,但想要在不抛出异常的情况下进行验证,则应使用TryParse
。对于此代码,您可以在用户输入上使用int
来验证他们是否为您提供了var regexp = new RegExp("\\b" + src_text + "\\b", "g");
var walker = document.createTreeWalker(elt, NodeFilter.SHOW_TEXT);
var node = walker.nextNode();
while (node) {
let nextNode = walker.nextNode();
let newNode = document.createElement('span');
newNode.innerHTML = node.textContent.replace(regexp, "foo");
node.parentNode.replaceChild(newNode, node);
node = nextNode;
}
,而不是直接投射它。
答案 1 :(得分:0)
实际上,如果输入字符串无法转换为目标类型,Convert.To..()
将抛出FormatException。你做错的事情就是通过这一行(strokes = Convert.ToInt32(Console.ReadLine());
)你将输入转换为integer
并再次进行解析。
注意:
Int32.TryParse()
的输入应为字符串,整数变量应为out param。在你的情况下,两者都是整数。
我建议您采用以下方式更好地完成此任务:
static void Main(string[] args)
{
int par = 3;
int strokes = 4;
int score;
Console.Write("Enter Score ");
if (!Int32.TryParse(Console.ReadLine(), out par))
{
Console.WriteLine("invalid input; conversion failed");
}
if (!Int32.TryParse(Console.ReadLine(), out strokes))
{
Console.WriteLine("invalid input; conversion failed");
}
if (!Int32.TryParse(Console.ReadLine(), out score))
{
Console.WriteLine("invalid input; conversion failed");
}
// Now you will get all values; so you can proceed
if (score < par)
Console.WriteLine("Score is below par.");
else if (score > par)
Console.WriteLine("Score is above par.");
else if (score == par)
Console.WriteLine("Score is equal to par.");
}
答案 2 :(得分:0)
在使用用户输入修改代码后,我找到了解决方案。
{
int par = 3;
int strokes = 4;
Console.WriteLine("Enter Score ");
strokes = Convert.ToInt32(Console.ReadLine());
if (strokes < par)
Console.WriteLine("Score is below par.");
else if (strokes > par)
Console.WriteLine("Score is above par.");
else if (strokes == par)
Console.WriteLine("Score is equal to par.");
}