C# 如何修复,该文本框接受int
我希望输入类型为int,例如int number,而不是string,然后解析。因此,当我试图解析C# 如何修复,该文本框接受int,c#,wpf,C#,Wpf,我希望输入类型为int,例如int number,而不是string,然后解析。因此,当我试图解析InputNumberint.parse(InputNumber.Text)时,我得到一个错误,输入字符串的格式不正确 它可以工作,但每当我按Backspace删除数字时,我的项目就会崩溃 正如我所说,我已经尝试将输入解析为int。 int.Parse(InputNumber.Text) 所以,如果我能使用int,我的方法会更短,更容易理解 private void InputNumber_Tex
InputNumber
int.parse(InputNumber.Text)
时,我得到一个错误,输入字符串的格式不正确
它可以工作,但每当我按Backspace删除数字时,我的项目就会崩溃
正如我所说,我已经尝试将输入解析为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();
}
}
publicstaticbool IsEvenOdd(字符串编号)
{
列表偶数=新列表()
{
"0","2","4","6","8"
};
foreach(变量e为偶数)
{
if(number.Substring(0,number.Length-1).ToString()==e)
{
返回true;
}
}
返回false;
}
我期望输出2是偶数,但实际输出是奇数
或者,例如3应该是奇数,它表示它是偶数。您可以简单地使用
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();
}
}
首先,您使用了错误的事件IMO。您希望在输入数字后验证该数字,而不是在输入数字时验证该数字。文本框中文本的每次更改都会触发您订阅的事件 因此,我会
如果
检查是否按下了enter按钮,然后我会允许代码运行,但这可以在KeyUp
事件中进行检查,类似这样:
private void TextBox_KeyUp(object sender, KeyEventArgs e)
{
if (e.Key != Key.Enter) return;
// your validation
}
在该处理程序中,您可以检查并尝试解析该数字,因为您确定输入了该数字,并且用户希望通过按Enter按钮输入该数字(解析后,您只需检查数字%2
是否等于零)
您的方法IsEvenOdd
也可以简化为:
even.Contains(number);
如果数字在列表中,则返回true,否则返回false。您可以使用
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
可以检查您的数字是偶数还是奇数。这应该可以做到:我使用
int.TryParse
捕获“错误”输入的所有错误
要检查数字是否为偶数,这应该是最快的方法:
public static bool IsEven (int number) => number % 2 == 0;
编号中的值是多少?它是数字吗?@prasadelkikikar 0,因为用户需要键入它。使用
if(int.TryParse(textBox.Text,out int value)){}
@Sᴇ我在方法或?你的输出中有一个输入错误,它应该是“偶数”和“奇数”。非常感谢,但我有一个建议给你,你应该分开if,因为它不会清除输出。你有myb一点时间打开聊天室吗,我有一个关于另一个程序的问题?如果它与相同的代码相关,请继续,如果这是来自另一个程序,那么最好再写一个问题,在阅读之前,我可以链接你这个问题吗,我已经在3天前发布了,但没有确切的答案?因为他们会将其标记为重复。谢谢我有问题你有时间打开聊天吗,我有关于另一个程序的问题,因为我需要等90分钟再问一次,这会很有帮助。谢谢
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;