转移变量(C#)

时间:2016-03-15 03:31:49

标签: c# variables conditional

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());

请你好!我是新手。

3 个答案:

答案 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.");

    }