【发布时间】:2020-03-31 23:08:30
【问题描述】:
(我已经尝试找到类似的问题但没有运气,所以我希望也许有人可以提供解决方案)
我在第一堂课中有一个 do while 循环,目标是循环直到用户输入英尺、米或码,如下所示:
string convert = "";
do
{
Console.Clear();
Console.WriteLine("What conversion: Feet, Meters, Yards");
try
{
convert = Convert.ToString(Console.ReadLine());
}
catch (Exception)
{
Console.Clear();
Console.WriteLine("Incorrect conversion");
Console.ReadKey();
}
convert = Values.Input(convert);
Console.WriteLine(convert);
Console.ReadKey();
} while (_____); // Trying to loop while argument is thrown from my other class
Console.WriteLine("Continue on");
Console.ReadLine();
我的单独值类输入法:
public static string Input(string input)
{
string convert = input;
if (convert == "Meters")
{
input = "Meters";
}
else if (convert == "Feet")
{
input = "Feet";
}
else if (convert == "Yards")
{
input = "Yards";
}
else
{
throw new System.ArgumentException("Incorrect conversion");
//Trying to loop my main program if an ArgumentException is thrown here
}
return input;
}
我的尝试:
} while (convert != "Meters" || convert != "Feet" || convert != "Yards");
Console.WriteLine("Continue on");
Console.ReadLine();
我尝试告诉它在 convert 不是米、英尺或码时继续循环,但在抛出参数后我无法继续程序。
我能否在抛出此 System.ArgumentException 后继续我的应用程序?如果可以,我将在我的 while 循环中输入什么来允许这样做?
【问题讨论】:
-
附注:
Console.ReadLine已经返回一个字符串。无需对返回的值调用Convert.ToString。 (事实上,Convert.ToString会将null转换为"",这将阻止您检测输入结束,例如,如果标准输入被重定向。)