我的程序允许插入0到100之间的数字。
但是,它们只能是非重复的。我的程序中遇到的问题是当用户输入0时,它会将其输入列表框。
问题在于,用户可以输入尾随零,例如00
。这将允许用户在列表框中输入另一个0
,这会产生重复。如何阻止用户这样做,因此只能插入一个零。
//If pass validation add number to listbox
if (int.TryParse(txtInsert.Text, out dnum))
{
Convert.ToInt32(lstNumberList.Items.Add("\t" + dnum));//Insert number with tab
index++;
答案 0 :(得分:2)
不要比较string
你将遇到麻烦的地方前导零
"1" != "01" != "001" != "0001" != ...
但是int
s:
1 == 01 == 001 == 0001 == ...
这样的事情:
// Nothing entered e.g. " "
if (string.IsNullOrWhiteSpace(txtInsert.Text)) {
MessageBox.Show("Oops! Please enter a number to add to the list");
return;
}
int value;
// Invalid value entered (e.g. "bla-bla-bla")
if (!int.TryParse(txtInsert, out value)) {
MessageBox.Show("Oops! Invalid number");
return;
}
// Value is out of [0..100] range
if ((value < 0) || (value > 100)) {
MessageBox.Show($"Oops! {value} is out of [0..100] range");
return;
}
// Duplicates
if (lstNumberList.Items.Contains("\t" + value.ToString())) {
MessageBox.Show($"Oops! {value} is a duplicate number");
return;
}
...
// All tests are passed, let's add the value
lstNumberList.Items.Add("\t" + value.ToString());