我希望输入类型为整数,例如int数字,而不是字符串然后进行解析。因此,当我尝试解析InputNumber
int.Parse(InputNumber.Text)
时,我收到错误消息,输入字符串的格式不正确。
它可以工作,但是每当我按Backspace键删除该号码时,我的项目就会崩溃。
正如我所说,我试图将Input解析为int。
int.Parse(InputNumber.Text)
因此,如果我可以使用int,我的方法将更短,更容易理解。
private void InputNumber_TextChanged(object sender, TextChangedEventArgs e)
{
string number = InputNumber.Text;
bool isEvenOdd = EvenOddChecker.IsEvenOdd(number);
OutputNumber.Text = number + (isEvenOdd ? " is a even number" : " is a odd number");
if (InputNumber.Text == string.Empty)
{
OutputNumber.Clear();
}
}
public static bool IsEvenOdd(string number)
{
List<string> even = new List<string>()
{
"0","2","4","6","8"
};
foreach (var e in even)
{
if (number.Substring(0, number.Length - 1).ToString() == e)
{
return true;
}
}
return false;
}
我希望输出2是偶数,但实际输出是奇数。
例如3应该是一个奇数,它说是偶数。
答案 0 :(得分:2)
您可以简单地使用int.TryParse()
进行编码,例如
private void InputNumber_TextChanged(object sender, TextChangedEventArgs e)
{
if(int.TryParse(InputNumber.Text, out int number))
{
OutputNumber.Text = number + (number % 2 == 0? " is an even number" : " is an odd number");
//No need to write entire function we have modulo to check even odd
}
if (InputNumber.Text == string.Empty)
{
OutputNumber.Clear();
}
}
答案 1 :(得分:1)
您可以使用int.TryParse()
来避免出现异常:
private void InputNumber_TextChanged(object sender, TextChangedEventArgs e)
{
string number = InputNumber.Text;
if(int.TryParse(number, out int value))
{
bool isEven = value % 2 == 0;
OutputNumber.Text = number + (isEven ? " is an even number" : " is an odd number");
if (InputNumber.Text == string.Empty)
{
OutputNumber.Clear();
}
}
}
然后通过执行yourIntValue % 2 == 0
,可以检查您的电话号码是偶数还是奇数。
答案 2 :(得分:1)
您应该尝试解析它。
int.TryParse
答案 3 :(得分:1)
要检查数字是否为偶数:
public static bool IsEven (int number) => number % 2 == 0;
答案 4 :(得分:0)
首先,您正在使用错误的事件IMO。您要在输入数字之后而不是在输入数字时验证数字。文本框中的每个文本更改都会触发您订阅的事件。
因此,我会if
检查是否按下了Enter键,然后允许代码运行,但这可以在KeyUp
事件中进行检查,如下所示:< / p>
private void TextBox_KeyUp(object sender, KeyEventArgs e)
{
if (e.Key != Key.Enter) return;
// your validation
}
在该处理程序中,您可以检查并尝试解析该数字,因为您可以确保输入了该数字,并且用户希望通过按Enter按钮输入该数字(解析后,您只需要检查{{1} }等于零)。
您的方法number % 2
可以简化为:
IsEvenOdd
如果列表中有数字,则返回true,否则返回false。
答案 5 :(得分:0)
这应该可以解决问题:
我使用int.TryParse
来捕获“错误”输入的所有错误。
private void InputNumber_TextChanged (object sender, TextChangedEventArgs e)
{
string numberString = InputNumber.Text;
if (!int.TryParse(numberString, out int number))
{
OutputNumber.Clear();
return;
}
bool isEven = EvenOddChecker.IsEven(number);
OutputNumber.Text = number + (isEven ? " is an even number" : " is an odd number");
if (InputNumber.Text == string.Empty)
{
OutputNumber.Clear();
}
}
要检查数字是否为偶数,这应该是最快的方法:
public static bool IsEven (int number) => number % 2 == 0;