我试图弄清楚为什么当我运行程序并按Submit按钮时出现错误,提示我的列表格式错误。程序的一些背景知识:适用于我的视觉编程课程。该程序用于银行帐户。我试图评论每个部分的内容,以使其更容易阅读
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//Tab 1 Create and close account
private void Submitbtn_Click(object sender, EventArgs e)
{
double x;
if (OpenRdo.Checked == true && Nametxtbx.TextLength > 0)
{
double.TryParse(Nametxtbx.Text, out x);
// after clicking the button there is
// no number; it says system.random
Random acct = new Random();
int AccountNumber = acct.Next(5, 1000);
outputlbl.Text = acct.ToString();
}
// list for accounts
// This is where it says I have the error
// that my list is in the wrong format
var accounts = new List<Account>
{
new Account(Nametxtbx.Text, double.Parse(outputlbl.Text), 0)
};
// Write these records to a file
WriteFile(accounts);
// message box when you create account
if (ValidateChildren(ValidationConstraints.Enabled))
{
MessageBox.Show("Account Created", "Message",
MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
//writing to the file
static void WriteFile(List<Account> accts)
{
StreamWriter outputFile = File.CreateText("accounts.txt");
string record;
foreach (var acct in accts)
{
record = $"{acct.Name},{acct.Balance}";
Console.WriteLine($"Writing record: {record}");
outputFile.WriteLine(record);
}
outputFile.Close();
}
}
答案 0 :(得分:1)
据我所知(这是很多代码),问题在于这些行:
Random acct = new Random();
int AccountNumber = acct.Next(5, 1000);
outputlbl.Text = acct.ToString();
您将标签设置为“ System.Random”(因为在错误的地方调用了ToString())。而且以后不能将其合理地转换为整数。
理想情况下,您甚至不应从UI检索数据。如果后面的代码中有整数,则保留该整数。用它。但是由于事件之间的分隔可能并不总是可能的。
答案 1 :(得分:-1)
我建议,如果您不知道文本框中的内容,请不要仅解析文本。 宁可做这样的事情
list3 = [x for x in list2 if not (x.isdigit() or x[0] == '-' and x[1:].isdigit())]
另外,看看formatprovider