我被困在這個程式上,我必須創建一個 for 回圈來預測給定天數后的人口。這里是:
創建一個應用程式來預測生物種群的大致大小。應用程式應使用文本框允許用戶輸入生物的起始數量、平均每日人口增長(以百分比表示)以及生物剩余繁殖的天數。例如,假設用戶輸入以下值:
Starting number of organisms: 2
Average daily increase: 30%
Number of days to multiply: 10
它應該像這樣輸出:
(Days) (Approximate Population)
1 ------- 2
2 ------- 2.6
3 ------- 3.38
4 ------- 4.394
5 ------- 5.7122
等等。
但是當我運行我的代碼時,這就是所有出現的內容:
(Days) (Approximate Population)
10 ------- 0
這是代碼:
public partial class Population : Form
{
int count = 1;
double organisms;
double dailyIncrease;
double days;
double population;
public Population()
{
InitializeComponent();
}
private void calculateButton_Click(object sender, EventArgs e)
{
try
{
organisms = double.Parse(organismsTextBox.Text);
try
{
dailyIncrease = double.Parse(dailyIncreaseTextBox.Text);
try
{
days = double.Parse(daysTextBox.Text);
for (int count = 1; count <= days; count )
population = (organisms * dailyIncrease / 100);
populationListBox.Items.Add(days " " population);
}
catch
{
MessageBox.Show("Entires must be numeric.", "Data Entry Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
daysTextBox.Focus();
daysTextBox.SelectAll();
}
}
catch
{
MessageBox.Show("Entries must be numeric.", "Data Entry Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
dailyIncreaseTextBox.Focus();
dailyIncreaseTextBox.SelectAll();
}
}
catch
{
MessageBox.Show("Entries must be numeric", "Data Entry Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
organismsTextBox.Focus();
organismsTextBox.SelectAll();
}
}
}
我不確定我在這里做錯了什么?
uj5u.com熱心網友回復:
如果您的問題是 populationListBox 僅包含最后一天的專案,請嘗試以下操作:
for (int count = 1; count <= days; count )
{
population = (population * dailyIncrease / 100);
populationListBox.Items.Add(count " " population);
}
uj5u.com熱心網友回復:
xxx.TryParse()您可以通過使用這些方法并檢查失敗而不是成功來使其更易于閱讀:
private void calculateButton_Click(object sender, EventArgs e)
{
double organisms;
double dailyIncrease;
int days;
if (!double.TryParse(organismsTextBox.Text, out organisms))
{
MessageBox.Show("Entries must be numeric", "Data Entry Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
organismsTextBox.Focus();
organismsTextBox.SelectAll();
return;
}
if (!double.TryParse(dailyIncreaseTextBox.Text, out dailyIncrease))
{
MessageBox.Show("Entries must be numeric.", "Data Entry Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
dailyIncreaseTextBox.Focus();
dailyIncreaseTextBox.SelectAll();
return;
}
if (!int.TryParse(daysTextBox.Text, out days))
{
MessageBox.Show("Entires must be numeric.", "Data Entry Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
daysTextBox.Focus();
daysTextBox.SelectAll();
return;
}
populationListBox.Items.Clear();
for (int count = 1; count <= days; count )
{
populationListBox.Items.Add(count "\t" organisms);
organisms = (organisms * dailyIncrease / 100);
}
}
示例運行:

uj5u.com熱心網友回復:
你不應該使用例外來控制你的代碼流。這使得遵循代碼的邏輯變得非常困難。
而且由于您使用完全相同的代碼決議雙打,因此您還可以洗掉很多重復。
所以,在里面calculateButton_Click添加這個本地方法:
bool TryParse(TextBox textBox, out double value)
{
if (double.TryParse(textBox.Text, out value))
{
return true;
}
MessageBox.Show("Entries must be numeric.", "Data Entry Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
textBox.Focus();
textBox.SelectAll();
value = default(double);
return false;
}
它處理TextBox您傳入的任何內容的決議。
現在剩下的代碼calculateButton_Click是:
if (TryParse(organismsTextBox, out double organisms))
{
if (TryParse(dailyIncreaseTextBox, out double dailyIncrease))
{
if (TryParse(daysTextBox, out double days))
{
double population = 0.0;
for (int count = 1; count <= days; count )
{
population = (organisms * dailyIncrease / 100.0);
populationListBox.Items.Add($"{days} {population}");
}
}
}
}
這包括將每天的人口添加到populationListBox.
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/449496.html
標籤:C#
上一篇:DapperORM多級嵌套物件
