我对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);
}
` 有没有办法来解决这个问题 ?如果是这样的话?
答案 0 :(得分:5)
IsNullOrWhiteSpace
没有int
的等价物,因为int
始终代表一个数字。
我要求用户输入其中的3个并留空。
一种方法是将用户输入保持为string
,直到您准备使用其整数形式:
Console.WriteLine("ilk aracın hızını giriniz");
string sv1 = Console.ReadLine();
在IsNullOrWhiteSpace
,sv1
,sv2
,sx
上使用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) {
...
}