第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

需要計(jì)算用戶輸入的多個(gè)TimeSpan值的平均值

需要計(jì)算用戶輸入的多個(gè)TimeSpan值的平均值

C#
米脂 2022-11-13 17:30:03
這是我正在研究的跑步配速/時(shí)間計(jì)算器。我遇到的這個(gè)特殊問題是找到輸入的英里時(shí)間值的平均配速。我讓用戶通過文本框以 hh:mm:ss 格式輸入多個(gè)值。我需要將這些值相加,找到輸入值的平均值,然后將該平均值返回到 hh:mm:ss 格式的標(biāo)簽。我已經(jīng)嘗試了多種方法來做到這一點(diǎn),并閱讀了多篇其他帖子,但一直卡在其中。我試過使用 List 但輸入的值的數(shù)量總是不同的,我需要它是動(dòng)態(tài)的。如果有辦法只將用戶定義的值輸入到列表中,我的列表就可以了。截至目前,即使其中一個(gè)沒有價(jià)值,它也會(huì)得到我所有盒子的平均值。還嘗試將 TimeSpan 值相加并將它們除以計(jì)數(shù)。這將獲得用戶輸入的值的正確計(jì)數(shù)。但是,我收到一條錯(cuò)誤消息,提示無法將 / 運(yùn)算符應(yīng)用于 TimeSpan 和 int 類型的操作數(shù)。這與查找 TimeSpan 集合的平均值不同。那篇文章中使用的代碼破壞了我的整個(gè)應(yīng)用程序。       private void calculate_btn_Click(object sender, EventArgs e)        {            TimeSpan d1 = TimeSpan.Parse(textBox1.Text);            TimeSpan d2 = TimeSpan.Parse(textBox2.Text);            TimeSpan d3 = TimeSpan.Parse(textBox3.Text);            var sourceList = new List<TimeSpan>();            sourceList.Add(d1);            sourceList.Add(d2);            sourceList.Add(d3);            var averageTimeSpan = new TimeSpan(Convert.ToInt64(sourceList.Average(timeSpan => timeSpan.Ticks)));            averagelabletext.Text = averageTimeSpan.ToString();        }    private void calculate_btn_Click(object sender, EventArgs e)    {        TimeSpan d1 = TimeSpan.Parse(textBox1.Text);        TimeSpan d2 = TimeSpan.Parse(textBox2.Text);        TimeSpan d3 = TimeSpan.Parse(textBox3.Text);        TimeSpan total = (d1 + d2 + d3);        int count = 0;        foreach (Control c in Controls)        {            if (!(c is TextBox)) continue;            TextBox t = c as TextBox;            {                if (t.Text != "00:00:00")                {                    count++;                }            }        }        averagelabletext.Text = total / count;    }我希望如果用戶在文本框 1 中輸入 00:09:00,在文本框 2 中輸入 00:09:30,結(jié)果應(yīng)該是 00:09:15?,F(xiàn)在,如果用戶輸入這些相同的值,則返回的平均值為 00:06:10,因?yàn)樗栽趯⒌谌齻€(gè)值計(jì)算為平均值。由于用戶尚未在該框中輸入值,因此仍為 00:00:00。C#窗體
查看完整描述

2 回答

?
慕妹3146593

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超9個(gè)贊

使用以下方法過濾在進(jìn)行平均之前未輸入的結(jié)果Where:


private void calculate_btn_Click(object sender, EventArgs e)

{

    var d1 = TimeSpan.Parse(textBox1.Text);

    var d2 = TimeSpan.Parse(textBox2.Text);

    var d3 = TimeSpan.Parse(textBox3.Text);


    var sourceList = new List<TimeSpan> {d1,d2,d3};


    var averageTicks = sourceList.Where(t=>t.Ticks>0).Average(t=>t.Ticks);

    var averageTimeSpan = new TimeSpan(averageTicks);

    averagelabletext.Text = averageTimeSpan.ToString();

}

我可能會(huì)做更像這樣的事情(為了清楚起見):


private void calculate_btn_Click(object sender, EventArgs e)

{

    var textboxes = new List<TextBox> {textBox1, textBox2, textBox3};

    var ticks = textboxes.Select(t=>TimeSpan.Parse(t.Text).Ticks);

    var enteredTicks = ticks.Where(t=>t!=0);


    var averageTicks = enteredTicks.Average();

    var averageTimeSpan = new TimeSpan(averageTicks);

    averagelabletext.Text = averageTimeSpan.ToString();

}

然后進(jìn)一步簡化:


private void calculate_btn_Click(object sender, EventArgs e)

{

    var textboxes = new List<TextBox> {textBox1, textBox2, textBox3};

    var ticks = textboxes

        .Select(t=>TimeSpan.Parse(t.Text).Ticks)

        .Where(t=>t!=0);

        .Average();


    var averageTimeSpan = new TimeSpan(ticks);

    averagelabletext.Text = averageTimeSpan.ToString();

}


查看完整回答
反對 回復(fù) 2022-11-13
?
神不在的星期二

TA貢獻(xiàn)1963條經(jīng)驗(yàn) 獲得超6個(gè)贊

嘗試使用 TryParse。如果它仍然以解析空字符串結(jié)束,請?zhí)砑右粋€(gè)檢查!string.IsNullOrWhiteSpace(TextBox1.Text) && TimeSpan.TryParse...


        private void calculate_btn_Click(object sender, EventArgs e)

        {

            var sourceList = new List<TimeSpan>();

            TimeSpan timeSpan;

            if (TimeSpan.TryParse(textBox1.Text, out timeSpan)) {

              sourceList.Add(timeSpan);

            }

            if (TimeSpan.TryParse(textBox2.Text, out timeSpan)) {

              sourceList.Add(timeSpan);

            }

            if (TimeSpan.TryParse(textBox3.Text, out timeSpan)) {

              sourceList.Add(timeSpan);

            }


            var averageTimeSpan = new TimeSpan(Convert.ToInt64(sourceList.Average(x => x.Ticks)));

            averagelabletext.Text = averageTimeSpan.ToString();

        }


查看完整回答
反對 回復(fù) 2022-11-13
  • 2 回答
  • 0 關(guān)注
  • 190 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)