输入字符串格式不正确
本文关键字:不正确 格式 字符串 输入 | 更新日期: 2023-09-27 17:56:57
有两个文本框,分别是unitprice.txt
和quantity.txt
。 还有一个名为total.txt
的文本框,随着用户输入单价和数量的时间不断更新。
O一旦用户输入这两个文本框,这两个文本框就会变空和总计.txt并按总数更新。 它需要连续完成,但在我的代码中不是 并说
INPUT STRING WASN'T IN A CORRECT FORM.
int tot = 0;
int sum = 0;
tot = int.Parse(unitprice.Text) * int.Parse(quantitytxt.Text);
sum = int.Parse(total.Text) + tot;
total.Text = sum.ToString();
用户输入"单价和数量"后,TOAL将更新"总计"文本框。 用户再次输入第二项的单价和数量,然后需要更新"总计"文本框中的先前值,这意味着需要将从第二个项目生成的新总计添加到以前的总计中。(2500+3000=5500)
嘿,它解决了,但以这种方式。
int sum = 0;
private void button2_Click(object sender, EventArgs e)
{
try
{
sum += int.Parse(qtytxt.Text) * int.Parse(unitprice.Text);
total.Text = sum.ToString();
}
catch (Exception er)
{
MessageBox.Show(er.Message);
}
首先检查文本框值是否为空,如果为空则在转换为解析 Int 时将 0 设置为默认值,否则将显示异常。 请参阅下面的代码,它将对您有所帮助。
int tot = 0;
int sum = 0;
tot = int.Parse(string.IsNullOrEmpty(unitprice.Text.Trim()) ? "0" : unitprice.Text.Trim()) * int.Parse(string.IsNullOrEmpty(quantitytxt.Text.Trim()) ? "0" : quantitytxt.Text.Trim());
sum = int.Parse(string.IsNullOrEmpty(total.Text.Trim()) ? "0" : total.Text.Trim()) + tot;
total.Text = sum.ToString();
您正在尝试将文本框值的字符串值解析为整数,因此您不应该像上面那样做,因为它也可能包含空字符串或空值。因此,请遵循以下转换方法,以免发生错误。
tot = Convert.ToInt32(Convert.ToString(unitprice.Text)) * Convert.ToInt32(Convert.ToString(quantitytxt.Text));
为什么要遵循上述方法是,Convert.ToString()
将处理空值并将空值转换为空字符串,Convert.ToInt32()
会将空字符串转换为 0 值。
如果你想要另一个选项,你可以尝试Int32.TryParse(a_string_here,an_out_int_here);
有关详细信息,请查看此处的文档:MSDN TryParse
它将获取一个字符串并尝试将其解析为有效的int...如果失败,则返回0。
int a ;
Int32.TryParse("5",out a);
System.Out.WriteLine("a="+a); // Will be: a=5
Int32.TryParse("e",out a);
System.Out.WriteLine("a="+a); // Will be: a=0
首先检查文本框值是否不为空,就好像您要将其解析为 Int 并且当它为空时,会出现这个或类似的异常。
int tot = 0;
int sum = 0;
tot = int.Parse(unitprice.Text!=String.Empty?unitprice.Text:"0") * int.Parse(quantitytxt.Text!=String.Empty?quantitytxt.Text:"0");
sum = int.Parse(total.Text!=String.Empty?total.Text:"0") + tot;
total.Text = sum.ToString();
您也可以尝试:
int tot = 0;
int sum = 0;
tot = Convert.ToInt32(unitprice.Text!=String.Empty?unitprice.Text:"0") * Convert.ToInt32(quantitytxt.Text!=String.Empty?quantitytxt.Text:"0");
sum = Convert.ToInt32(total.Text!=String.Empty?total.Text:"0") + tot;
total.Text = sum.ToString();
试试这个:
int tot = 0;
int sum = 0;
tot = Convert.ToInt32(unitprice.Text.Replace(" ", "")) * Convert.ToInt32(quantitytxt.Text.Replace(" ", ""));
sum = Convert.ToInt32(total.Text.Replace(" ", "")) + tot;
total.Text = sum.ToString();
如果这引发异常,您的文本框可能包含不需要的字符(即逗号:"1,000.00"或字母)或空,使转换引发异常。
问题是...如果字符串不是数字......
除数字以外的任何字符串值都会显示错误,指出输入字符串格式不正确
!!.有一个解决方案.....将您的代码插入尝试捕获块
try{ your code here}catch(FormatException){}
或者找到另一种机制来避免数字以外的字符串。
如果输入值不是整数,Int32.Parse()
将引发异常。 使用 Int32.TryParse()
转换值而不引发异常。 如果转换失败,TryParse()
将返回false
并返回零:
int intValue = -1;
bool result;
result = Int32.TryParse("23", out intValue); // result = true, intValue = 23
result = Int32.TryParse("AB", out intValue); // result = false, intValue = 0
编辑:对于您的具体情况,请尝试以下操作:
int tot = 0;
int sum = 0;
int price = 0; // output parameter to receive value
int quantity = 0; // output parameter to receive value
int total = 0; // output parameter to receive value
TryParse(unitprice.Text, out price); // price contains the unit price value
TryParse(quantitytxt.Text out quantity); // quantity contains the quantity value
TryParse(total.Text, out total); // total contains the total value
tot = price * quantity;
sum = total + tot;
total.Text = sum.ToString();
int tot = 0;
int sum = 0;
tot = int.Parse(unitprice.Text+"0") * int.Parse(quantitytxt.Text+"0");
sum = int.Parse(total.Text+"0") + tot;
total.Text = sum.ToString();
试试这段代码。