我收到一个错误,告诉我该值的数据类型不正确。
我尝试过解析并尝试解析。
namespace ScoreCalculator
{
public partial class ScoreCalculator : Form
{
Int32 scoreTotal = 0;
Int32 scoreCount = 0;
public ScoreCalculator()
{
InitializeComponent();
}
private void AddBtn_Click(object sender, EventArgs e)
{
Int32 average;
scoreCount +=1;
// the error vvvvvvv
scoreTotal += Convert.ToInt32(scoreTotalTxt.Text);
scoreTotalTxt.Text = Convert.ToString(scoreTotal);
scoreCountTxt.Text = Convert.ToString(scoreCount);
average = scoreTotal / scoreCount;
averageTxt.Text = average.ToString();
scoreTxt.Focus();
}
}
它应该让我使 scoreTotal 等于我的 scoreTotalTxt 文本框中的值加上它以前的数字。
将字符串转换为整数的最安全方法是使用int.TryParse
方法,该方法接受要转换的字符串和一个在转换成功时设置为该值的out
参数。它返回一个指示成功的bool
,因此您可以在if
条件下使用它。
另请注意,您可以在任何object
上调用ToString
而不是Convert.ToString
。
例如:
private void AddBtn_Click(object sender, EventArgs e)
{
// Make sure we can convert our number first
int additionalScoreTotal; // This will hold the converted value
if (int.TryParse(scoreTotalTxt.Text, out additionalScoreTotal))
{
scoreCount++;
scoreTotal += additionalScoreTotal; // If we made it past the if, this has our value
scoreTotalTxt.Text = scoreTotal.ToString();
scoreCountTxt.Text = scoreCount.ToString();
int average = scoreTotal / scoreCount;
averageTxt.Text = average.ToString();
scoreTxt.Focus();
}
else
{
MessageBox.Show("Error: The value in 'ScoreTotal' is not a valid integer");
// Optionally, select the problematic text so they can change it
scoreTotalTxt.Focus();
scoreTotalTxt.SelectAll();
}
}
Convert.ToInt32(scoreTotalTxt.Text);
如果您尝试将空字符串(文本框中没有任何内容(转换为数字,则会失败并显示错误"输入字符串格式不正确">
我建议您检查总框是否为空,并在尝试转换之前将其设置为一个值:
if(string.IsNullOrWhitespace(scoreTotalTxt.Text))
scoreTotalTxt.Text = "0";