【发布时间】:2017-02-19 20:23:01
【问题描述】:
我正在尝试获取浮点值作为输入,如果跳过一个值以将其设置为 0,但由于跳过将其设置为 null,我得到一个异常。所以,我尝试使用“??”像这样的操作员:
float speed = Convert.ToSingle(Console.ReadLine()) ?? default(float);
或
float speed = Convert.ToSingle(Console.ReadLine()) ?? 0;
但我得到一个错误:
错误 CS0019:操作员 '??'不能应用于类型的操作数 'float' 和 'int'
我将如何写这样的:float y = x ?? 0;
public static void CalculateDistanceTimeSpeed()
{
Console.WriteLine("Find distance/speed/time based on any of the two.");
Console.WriteLine("Enter two of the three requirements");
Console.WriteLine();
Console.WriteLine("Enter speed in km/h (Enter 0 if unkown)");
float speed = Convert.ToSingle(Console.ReadLine());
Console.WriteLine("Enter distance in km (Enter 0 if unkown)");
float distance = Convert.ToSingle(Console.ReadLine());
Console.WriteLine("Enter time in hour/s (Enter 0 if unkown)");
float time = Convert.ToSingle(Console.ReadLine());
Console.WriteLine(distance, speed, time);
if (speed == 0)
{
speed = distance / time;
speed.ToString("0.##");
Console.WriteLine("Determined Average speed : {1}km/h, based on distance: {0}km and time: {2}hrs.", distance, speed, time);
}
else if (distance == 0)
{
distance = time / speed;
distance.ToString("0.##");
Console.WriteLine("Determined distance traveled : {0}km, based on speed: {1}km/h and time: {2}hrs.", distance, speed, time);
}
else
{
time = distance / speed;
time.ToString("0.##");
Console.WriteLine("Determined time traveled: {2}hrs, based on speed: {1}km/h for distance: {0}km.", distance, speed, time);
}
【问题讨论】:
-
我在这里看不到
null。 -
使用 float.TryParse.
-
先搜索一下为什么会出现这个错误?因为数据类型不可为空。所以你可以检查如何使它可以为空。
标签: c#