You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C# WinForms文本框中检测空格并求和输入的数字?

解决C# WinForms婚礼开支求和问题

你的代码目前存在两个核心问题,导致无法正确实现需求:

问题分析

  1. 空格检测错误:你定义的space = ""是空字符串,而非空格字符(正确应为" "),因此永远触发不了空格判断逻辑。
  2. 数字解析逻辑错误:逐个字符解析成整数的方式,会把多位数拆成单个数字相加(比如输入10 20会计算成1+0+2+0=3,而非10+20=30),完全不符合“对空格分隔的开支金额求和”的需求。

正确解决方案

推荐使用字符串分割+安全解析的方案,代码简洁且能处理各种异常输入:

string expensesInput = txEntrada.Text;
int totalExpenses = 0;

// 按空格分割输入,自动移除空项(处理连续空格、首尾空格的情况)
string[] expenseItems = expensesInput.Split(new[] {' '}, StringSplitOptions.RemoveEmptyEntries);

foreach (string item in expenseItems)
{
    // 安全解析数字,避免非数字输入导致程序崩溃
    if (int.TryParse(item, out int amount))
    {
        totalExpenses += amount;
    }
    else
    {
        // 可选:提示用户输入无效,比如弹出消息框
        // MessageBox.Show($"无法识别金额:{item},请输入有效的整数");
    }
}

txSortida.Text = totalExpenses.ToString();

若需修正原循环逻辑(仅作参考,不推荐)

如果一定要基于原有循环思路修改,需要先拼接完整数字再解析,同时正确检测空格:

string expenses = txEntrada.Text;
int total = 0;
string currentNumber = "";

for (int i = 0; i < expenses.Length; i++)
{
    char currentChar = expenses[i];
    
    // 检测空白字符(包括空格、制表符等,更通用)
    if (char.IsWhiteSpace(currentChar))
    {
        // 遇到空格时,解析当前已拼接的数字
        if (!string.IsNullOrEmpty(currentNumber))
        {
            total += int.Parse(currentNumber);
            currentNumber = "";
        }
    }
    else
    {
        // 非空格字符,拼接成当前数字
        currentNumber += currentChar;
    }
}

// 处理循环结束后剩余的最后一个数字
if (!string.IsNullOrEmpty(currentNumber))
{
    total += int.Parse(currentNumber);
}

txSortida.Text = total.ToString();

该版本无错误处理,输入非数字会抛出异常,因此优先选择第一个方案。

内容的提问来源于stack exchange,提问作者Orifutu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 21:20:24