Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 检查控制台应用程序C中的输入数据类型#_C#_Console Application - Fatal编程技术网

C# 检查控制台应用程序C中的输入数据类型#

C# 检查控制台应用程序C中的输入数据类型#,c#,console-application,C#,Console Application,如何在c#控制台应用程序中检查输入数据类型 Class A { object o=Console.ReadLine(); //logic here to check data type and print //e.g type of Integer, Decimal, String etc } 如果我输入23,它将打印“整数” 如果我输入23.9,它将打印“十进制” 如果我输入“abcd”,它将打印“字符串” 我想做的是。。 差不多 Class A { Type t=Typeof(Co

如何在c#控制台应用程序中检查输入数据类型

Class A
{

 object o=Console.ReadLine();
 //logic here to check data type and print
//e.g type of Integer, Decimal, String etc

}
如果我输入
23
,它将打印
“整数”

如果我输入
23.9
,它将打印
“十进制”

如果我输入
“abcd”
,它将打印
“字符串”

我想做的是。。 差不多

Class A
{
Type t=Typeof(Console.ReadLine().GetType);
Console.WriteLine(t.Name);
}

我不知道有什么神奇之处,不过你可以搜索包管理器/github。您必须解析输入字符串


您应该首先检查输入字符串是否包含在双引号中。如果是,请打印字符串

然后使用long.TryParse检查是否可以解析为long。如果是,请打印整数

然后使用decimal.TryParse查看是否可以将其解析为decimal。如果是,请打印十进制


这就是您的意思吗?

您需要解析传入的数据。根据需要处理的类型的不同,您可以走两条不同的路线:

  • 许多简单的数据类型都有一个名为
    TryParse()
    的静态方法。您可以使用此方法查看是否可以将输入字符串解析为每种类型。只有在处理数量非常有限的类型时,这才是一个好的解决方案
  • 您可以使用解析表达式语法(“PEG”)或类似的方法,它允许您定义解析任意文本的形式语法。这种方法的优点是,您还可以支持复杂的结构(即值列表、嵌套值等)。这种方法非常灵活和富有表现力,但也有更大的学习曲线
  • 您可以使用正则表达式,它提供与PEG类似的功能,尽管通常在更有限的上下文中。您应该能够轻松找到常见简单数据类型(数字、布尔值、字符串等)的正则表达式

供未来读者阅读。。。我有类似的任务,我提出了以下解决方案: *任何来自控制台的输入都被视为字符串类型。在C语言中,您需要尽可能将输入解析为特定类型

    var input = Console.ReadLine();

// `typeToCheck`.TryParse(input, out _) - Will return True if parsing is possible.            

                if (Int32.TryParse(input, out _))
                {
                    Console.WriteLine($"{input} is integer type");
                }
                else if (double.TryParse(input, out _))
                {
                    Console.WriteLine($"{input} is floating point type");
                }
                else if (bool.TryParse(input, out _))
                {
                    Console.WriteLine($"{input} is boolean type");
                }
                else if (char.TryParse(input, out _))
                {
                    Console.WriteLine($"{input} is character type");
                }
                else // since you cannot parse to string ... if the previous statements came up false -> IT's STRING Type.
                {
                    Console.WriteLine($"{input} is string type");
                }

你试过什么?你具体有什么问题?堆栈溢出不是“为我编写代码”服务。它是为了帮助人们解决特定的、实际的编程问题。请做出一些努力,并提供一份好的报告,清楚地显示您的尝试,并详细解释您遇到的具体问题。将始终返回一个
系统。String
是的,我知道,我不希望任何人编写我的代码,我会自己编写。我只是想知道一种方法或想法,可以帮助我编写此代码**你可以告诉我,我没有很好地解释这个问题,我不擅长(据我所知)。“我只是想知道一种方法或一个想法来帮助我写这段代码”——这个问题太宽泛了。有许多方法可以解决上述问题,但您甚至没有提供明确的规范。例如,你说
“23”
应该打印
'String'
,但是
23
应该打印什么呢?编辑后的文章在清晰度方面与之前的文章没有任何不同。例如,如果用户输入
abcd
,输出应该是什么?更重要的是,你尝试过什么?是的,我这样写,我认为你遗漏了一些东西,因为我们需要先检查十进制数,然后再将其检查为整数。如果在编辑中,我会改为else。如果它是一个没有小数点的整数,它将报告为整数。如果是十进制,则else If块将命中并报告为十进制。否则它将作为字符串报告。
    var input = Console.ReadLine();

// `typeToCheck`.TryParse(input, out _) - Will return True if parsing is possible.            

                if (Int32.TryParse(input, out _))
                {
                    Console.WriteLine($"{input} is integer type");
                }
                else if (double.TryParse(input, out _))
                {
                    Console.WriteLine($"{input} is floating point type");
                }
                else if (bool.TryParse(input, out _))
                {
                    Console.WriteLine($"{input} is boolean type");
                }
                else if (char.TryParse(input, out _))
                {
                    Console.WriteLine($"{input} is character type");
                }
                else // since you cannot parse to string ... if the previous statements came up false -> IT's STRING Type.
                {
                    Console.WriteLine($"{input} is string type");
                }