我正在构建一个应用程序,它接受用户的两个输入。一个int,另一个float。
int.MaxValue
并且float.MaxValue
是我用来验证输入的两个属性。
但是,输入是通过添加每个来构建的,KeyChar
因为每个键输入都必须在按键事件期间进行验证,因为应用程序将用户限制为数字(整数/小数)。
到目前为止的代码:
ConsoleKeyInfo key;
const int intMaxValue = int.MaxValue;
const float floatMaxValue = float.MaxValue;
bool validated;
int tempAmount;
int intAmount;
string tempVal="";
do{
key = Console.ReadKey (true);
if (key.Key != ConsoleKey.Backspace)
{
validated = int.TryParse (key.KeyChar.ToString(), out tempAmount);
if (validated)
{
///Full amount is built here
tempVal += key.KeyChar;
//Fails here--->> as Type Cast happens on a String which hold a value beyond an int
if (int.Parse(tempVal) < intMaxValue)
{
intAmount = int.Parse(tempVal);
Console.Write(key.KeyChar);
}
我可以在用户按下 Enter 键后进行此测试。但是,它仍然会失败。因为 int 不可能超过它的最大值..
因此我想出了以下内容:但是感觉效率不高,因为我的第二个输入验证是基于float
...。
if (float.Parse(tempVal) < intMaxValue)
{
因此,请有人向我展示可在两种情况下使用的 int、float 类的有效属性。 或任何其他方式来缝合输入,同时逐位验证每个键,直到用户输入 Enter 键。