是否有整数的string.IsNullOrWhiteSpace版本?

时间:2017-08-27 10:37:04

标签: c# isnullorempty

我对C#和一般编程都很陌生,而且我花了好几个小时试图修复我的基本程序。我有4个变量,我要求用户输入3个变量并留空。程序对空的程序进行计算,但问题是我无法使用IsNullOrWhiteSpace进行整数计算。

Console.WriteLine("ilk aracın hızını giriniz");
int v1 = Convert.ToInt32(Console.ReadLine());

Console.WriteLine("ikinci aracın hızını giriniz");
int v2 = Convert.ToInt32(Console.ReadLine());

Console.WriteLine("yolun uzunluğunu giriniz");
int  x = Convert.ToInt32(Console.ReadLine());

Console.WriteLine("karşılaşma sürelerini giriniz");
int t = Convert.ToInt32(Console.ReadLine());

if (string.IsNullOrWhiteSpace(v1))
{
  v1 = x / t - v2;
  Console.WriteLine(v1);
}
else if (string.IsNullOrWhiteSpace(v2))
{
  v2 = x / t - v1;
  Console.WriteLine(v2);
}
else if (string.IsNullOrWhiteSpace(t))
{
  t = x / (v1 + v2);
  Console.WriteLine(t);
}
else if (string.IsNullOrWhiteSpace(x))
{
  x = (v1 + v2) * t;
  Console.WriteLine(x);
}

` 有没有办法来解决这个问题 ?如果是这样的话?

1 个答案:

答案 0 :(得分:5)

IsNullOrWhiteSpace没有int的等价物,因为int始终代表一个数字。

  

我要求用户输入其中的3个并留空。

一种方法是将用户输入保持为string,直到您准备使用其整数形式:

Console.WriteLine("ilk aracın hızını giriniz");
string sv1 = Console.ReadLine();

IsNullOrWhiteSpacesv1sv2sx上使用st,然后在if声明中进行转换:

if (string.IsNullOrWhiteSpace(s1)) {
    v1 = Convert.ToInt32(sx) / Convert.ToInt32(st) - Convert.ToInt32(sv2);
    Console.WriteLine(v1);
}

请注意,这是整数除法,因此将x除以t的任何小数结果都会被截断。

另一种方法是对所有四个值使用TryParse,并完全避免使用IsNullOrWhitespace

Console.WriteLine("ilk aracın hızını giriniz");
bool missingV1 = !int.TryParse(Console.ReadLine(), out var v1);
Console.WriteLine("ikinci aracın hızını giriniz");
bool missingV2 = !int.TryParse(Console.ReadLine(), out var v2);
Console.WriteLine("yolun uzunluğunu giriniz");
bool missingX = !int.TryParse(Console.ReadLine(), out var x);
Console.WriteLine("karşılaşma sürelerini giriniz");
bool missingT = !int.TryParse(Console.ReadLine(), out var t);
if (missingV1) {
    v1 = x / t - v2;
    Console.WriteLine(v1);
} else if (missingV2) {
    ...
}