C# 在C中读取整数的替代方法#
我知道通过使用C# 在C中读取整数的替代方法#,c#,input,type-conversion,inputstream,beginread,C#,Input,Type Conversion,Inputstream,Beginread,我知道通过使用Convert.To方法读取输入,但是除了此之外还有其他读取方法吗 int k = Convert.ToInt16(Console.ReadLine()); 从控制台应用程序读取输入的最简单方法是console.ReadLine。有可能的替代方案,但它们更为复杂,只适用于特殊情况:请参阅或 但是,重要的是转换为整数,不应使用Convert.ToInt32或Int32.Parse进行转换,而应使用 使用Int32.TryParse的原因在于,您可以检查是否可以转换为整数。相反,其
Convert.To
方法读取输入,但是除了此之外还有其他读取方法吗
int k = Convert.ToInt16(Console.ReadLine());
从控制台应用程序读取输入的最简单方法是
console.ReadLine
。有可能的替代方案,但它们更为复杂,只适用于特殊情况:请参阅或
但是,重要的是转换为整数,不应使用Convert.ToInt32
或Int32.Parse
进行转换,而应使用
使用
Int32.TryParse
的原因在于,您可以检查是否可以转换为整数。相反,其他方法会引发一个异常,您应该处理使代码流复杂化的异常。您可以使用int.TryParse
参见示例
var item = Console.ReadLine();
int input;
if (int.TryParse(item, out input))
{
// here you got item as int in input variable.
// do your stuff.
Console.WriteLine("OK");
}
else
Console.WriteLine("Entered value is invalid");
Console.ReadKey();
以下是您可以遵循的最佳选择:
int k;
if (int.TryParse(Console.ReadLine(), out k))
{
//Do your stuff here
}
else
{
Console.WriteLine("Invalid input");
}
您可以为Console创建自己的实现,并在任何地方使用它:
public static class MyConsole
{
public static int ReadInt()
{
int k = 0;
string val = Console.ReadLine();
if (Int32.TryParse(val, out k))
Console.WriteLine("You have typed a valid integer: " + k);
else
Console.WriteLine("This: " + val + " is not a valid integer");
return k;
}
public static double ReadDouble()
{
double k = 0;
string val = Console.ReadLine();
if (Double.TryParse(val, out k))
Console.WriteLine("You have typed a valid double: " + k);
else
Console.WriteLine("This: " + val + " is not a valid double");
return k;
}
public static bool ReadBool()
{
bool k = false;
string val = Console.ReadLine();
if (Boolean.TryParse(val, out k))
Console.WriteLine("You have typed a valid bool: " + k);
else
Console.WriteLine("This: " + val + " is not a valid bool");
return k;
}
}
class Program
{
static void Main(string[] args)
{
int s = MyConsole.ReadInt();
}
}
有3种类型的整数: 1.):16位数字(-32768到32767)。在c语言中,可以将短整数变量声明为
short
或Int16
2.):32位数字(-2147483648至2147483647)。用关键字int
或Int32
声明一个整数
3.):64位数字(-9223372036854775808至9223372036854775807)。使用long
或Int64
声明一个长整数
不同之处在于可以使用的数字范围。
您可以通过使用
convert.To
,Parse
或TryParse
来转换它们。这不是您想要的吗?实际上,您应该使用convert.ToInt32
。还有int.Parse
。是的,但我想知道还有其他方法吗?。如果你写的数字大于2^16(更精确的是2^16-1),前者将在Convert.ToInt32
正常工作时产生错误。这不是一个重复的问题吗?我确信至少有20个类似的。这像是用户定义的函数吗?这些只是用户定义的函数)您有编译时间错误,因为k
变量未初始化。另外,Console.WriteLine(“这个:“+k+”不是一个有效的整数”)代码>不显示用户的输入。当然,您是正确的。我没有直截了当地思考,我可以说我把Console.WriteLine和k值放在后面只是为了显示错误
public static class MyConsole
{
public static int ReadInt()
{
int k = 0;
string val = Console.ReadLine();
if (Int32.TryParse(val, out k))
Console.WriteLine("You have typed a valid integer: " + k);
else
Console.WriteLine("This: " + val + " is not a valid integer");
return k;
}
public static double ReadDouble()
{
double k = 0;
string val = Console.ReadLine();
if (Double.TryParse(val, out k))
Console.WriteLine("You have typed a valid double: " + k);
else
Console.WriteLine("This: " + val + " is not a valid double");
return k;
}
public static bool ReadBool()
{
bool k = false;
string val = Console.ReadLine();
if (Boolean.TryParse(val, out k))
Console.WriteLine("You have typed a valid bool: " + k);
else
Console.WriteLine("This: " + val + " is not a valid bool");
return k;
}
}
class Program
{
static void Main(string[] args)
{
int s = MyConsole.ReadInt();
}
}